Fehlermeldung, ... nicht-angrenzenden Zellen ...

27/10/2008 - 15:14 von FRANZ LUWEIN | Report spam
Hallo alle,

ich rufe in einem Makro die folgende Funktion auf.
Beim ersten Durchlauf funktioniert alles wie gewünscht.
Wenn ich, von der UserForm aus, das Makro mit anderen Daten erneut
aufrufe, erhalte ich immer im '############## Markierten Bereich die
Fehlermeldung:
Bei einer Markierung von nicht-angrenzenden Zellen ist die Ausführung
dieses Befehls nicht möglich.
Der quelle.Bereich ist immer ein Rechteck ohne verbundene Zellen.
Beim ziel.Bereich wird immer nur die oberste, linke Zelle angegeben.
Es ist völlig egal, mit welchen Daten ich beginne, beim ersten Durchlauf
klappt es immer, dann kommt immer die Fehlermeldung.

Wo liegt der Haken bei der Sache?
Ich zàhle auf euch.

Mit freundlichem Gruß

Franz


Function NamensBereichKopieren(wkbPresseName As String)

Dim ziel As Variant
Dim bereich As Range
Dim quelle As String
Dim quelleBlatt As String
Dim lRow As Long
Dim lRowNeu As Long

' Ziel (Mappe und Blatt) festlegen
Set ziel = Workbooks(wkbPresseName & ".xls").Sheets("Presse")

' Letzte benutzte Zeile ermitteln
lRow = ziel.Cells(Rows.Count, 1).End(xlUp).Row

' Hat NICHTS gebracht!!!
'evtl. verbundene Zellen trennen
'evtl. gesperrte Zellen entsperren
ziel.Range("A1:Z1000").UnMerge
ziel.Range("A1:Z1000").Locked = False

With ThisWorkbook

' Name der Datenquelle auslesen
quelle = .Sheets("Tabellenstand").Range("E3").Value & "Presse"

' quelle festlegen
Set bereich = .Names(quelle).RefersToRange

' zu kopierender Bereich einfàrben
bereich.Interior.ColorIndex = 34

'evtl. verbundene Zellen trennen
bereich.UnMerge

' benannter Bereich kopieren
bereich.Copy
End With

'#############################################################################################
' Werte aus dem kopierten quelle.Bereich in den ziel.Bereich übertragen
ziel.Range("A" & lRow + 4).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'#############################################################################################
'evtl. verbundene Zellen trennen
'ziel.Range("A1:Z1000").UnMerge

' Letzte benutzte Zeile ermitteln
lRowNeu = ziel.Cells(Rows.Count, 1).End(xlUp).Row

' Eingefügter Bereich einfàrben
ziel.Range(Cells(lRow + 3, 1), Cells(lRowNeu + 1,
7)).Interior.ColorIndex = 40

Application.CutCopyMode = False
Set ziel = Nothing
Set bereich = Nothing
End Function
 

Lesen sie die antworten

#1 Claus Busch
27/10/2008 - 16:53 | Warnen spam
Hallo Franz,

eine Funktion kann dir nur einen Wert in die aufrufende Zelle schreiben,
aber nicht wie hier z.B. Zellen einfàrben oder kopieren.
Probiere es stattdessen mit einer Prozedur, also àndere Function in Sub.
(ungetestet)


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP3 / Vista Ultimate
Office 2003 SP3 / 2007 Ultimate SP1

Ähnliche fragen