VBA Fehler bei Union(Range...)

Hallo Leute,

ich habe da ein echt seltsames Problem. Ich hab da eine Datei ohne Inhalt, wenn ich der unterstehende Code ausführe funktioniert er.
Wenn ich jetzt aber die Datei mit Daten fülle funktioniert der Code nicht mehr. Keine Ahnung warum und wieso und der gleichen.

Der Compiler meldet mir folgende Fehlermeldung:
Die Methode ‚Range‘ für das Objekt ‚_Global‘ ist fehlgeschlagen.

Er markiert mir die Zeile Union(Range…) (-> siehe Code) gelb.

Kann mir jemand weiterhelfen?

Mfg,
Sebastian

  
Sub protect\_sheet(Verknuepfung As Integer)  
Dim pass As String  
'On Error GoTo ErrorHandler  
  
If MsgBox("ACHTUNG: Bevor sie diese Funktion ausführen sollten sie den Monat übernehmen" & Chr(13) & \_  
 "Sind sie sicher das sie diesen Monat schließen wollen?" & Chr(13) \_  
 & "Nach diesem Vorgang kann der Monat nicht mehr bearbeitet werden!", vbOKCancel + vbQuestion, "Monat abschließen") = vbOK Then  
  
 pass = "kaffee06"  
 Sheets(Verknuepfung).Unprotect Password:=pass  
 Sheets(Verknuepfung).Select  
 Range("CF7").Value = "closed"  
 Union(Range( \_  
 "AN44,AM43,AL43,AL46,AM46,AN47,AN50,AN53,AM52,AL52,AL49,AM49,AL55,AM55,AN56,AN65,AM64,AL64,AL67,AM67,AN68,AN71,AM70,AL70,AL73,AM73,AN74,AL79,AM79,AN80,AN77,AM76" \_  
 ), Range( \_  
 "AL76,AL82,AM82,AN83,AN86,AM85,AL85,AL88,AM88,AN89,AN92,AM91,AL91,AL94,AM94,AN95,AN98,AM97,AL97,AL100,AM100,AN101,AN104,AM103,AL103,AL106,AM106,AN107,B13:AI57,B64:AI108,B116:T163,AL13" \_  
 ), Range( \_  
 "AM13,AN14,AN17,AM16,AL16,AL19,AM19,AL22,AM22,AN23,AN26,AM25,AL25,AL28,AM28,AN29,AN32,AM31,AL31,AL34,AM34,AN35,AN38,AM37,AL37,AL40,AM40,AN41" \_  
 )).Select  
 Selection.Locked = True  
 Sheets(Verknuepfung).Protect Password:=pass, DrawingObjects:=True, Contents:=True, Scenarios:=True  
End If  
Exit Sub  
'ErrorHandler:  
 'MsgBox "Fehler beim schliessen des Monats", vbCritical, "Fehler"  
 protectSheets ("kaffee06")  
End Sub  

ich habe da ein echt seltsames Problem. Ich hab da eine Datei
ohne Inhalt, wenn ich der unterstehende Code ausführe
funktioniert er.
Wenn ich jetzt aber die Datei mit Daten fülle funktioniert der
Code nicht mehr. Keine Ahnung warum und wieso und der
gleichen.

Der Compiler meldet mir folgende Fehlermeldung:
Die Methode ‚Range‘ für das Objekt ‚_Global‘ ist
fehlgeschlagen.

Er markiert mir die Zeile Union(Range…) (-> siehe Code)
gelb.

Hi Sebastian,
habe hier nur OO-Calc, da gibt es anscheinend kein „Union“.
Probier’s doch mal so:

Set Bereich = union(range(…),range(…),range(…))
Bereich.select

Gruß
Reinhard

Sub protect_sheet(Verknuepfung As Integer)
Dim pass As String
'On Error GoTo ErrorHandler

If MsgBox(„ACHTUNG: Bevor sie diese Funktion ausführen sollten
sie den Monat übernehmen“ & Chr(13) & _
„Sind sie sicher das sie diesen Monat schließen
wollen?“ & Chr(13) _
& „Nach diesem Vorgang kann der Monat nicht mehr
bearbeitet werden!“, vbOKCancel + vbQuestion, „Monat
abschließen“) = vbOK Then

pass = „kaffee06“
Sheets(Verknuepfung).Unprotect Password:=pass
Sheets(Verknuepfung).Select
Range(„CF7“).Value = „closed“
Union(Range( _

„AN44,AM43,AL43,AL46,AM46,AN47,AN50,AN53,AM52,AL52,AL49,AM49,AL55,AM55,AN56,AN65,AM64,AL64,AL67,AM67,AN68,AN71,AM70,AL70,AL73,AM73,AN74,AL79,AM79,AN80,AN77,AM76“
_
), Range( _

„AL76,AL82,AM82,AN83,AN86,AM85,AL85,AL88,AM88,AN89,AN92,AM91,AL91,AL94,AM94,AN95,AN98,AM97,AL97,AL100,AM100,AN101,AN104,AM103,AL103,AL106,AM106,AN107,B13:AI57,B64:AI108,B116:T163,AL13“
_
), Range( _

„AM13,AN14,AN17,AM16,AL16,AL19,AM19,AL22,AM22,AN23,AN26,AM25,AL25,AL28,AM28,AN29,AN32,AM31,AL31,AL34,AM34,AN35,AN38,AM37,AL37,AL40,AM40,AN41“
_
)).Select
Selection.Locked = True
Sheets(Verknuepfung).Protect Password:=pass,
DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
Exit Sub
'ErrorHandler:
'MsgBox „Fehler beim schliessen des Monats“, vbCritical,
„Fehler“
protectSheets („kaffee06“)
End Sub
[/CODE]

Hi Sebastian,
habe hier nur OO-Calc, da gibt es anscheinend kein „Union“.
Probier’s doch mal so:

Set Bereich = union(range(…),range(…),range(…))
Bereich.select

Gruß
Reinhard

Hallo Reinhard,

hab das:

Set Bereich = union(range(…),range(…),range(…))
Bereich.select

jetzt ausprobiert. Jedoch kommt die gleiche Fehlermeldung. :frowning:

Gibts da noch ne andere Methode um einen großen Bereich zu markieren und diesem ausgewählten Bereiche eine Funktion zuzuordnen??

mfg
Sebastian

Hi Sebastian,

hab das:

Set Bereich = union(range(…),range(…),range(…))
Bereich.select

jetzt ausprobiert. Jedoch kommt die gleiche Fehlermeldung. :frowning:

probier mal diese Schreibweise:
Set Bereich=union(range(„A1“,„A2“,„C4“),range(„B1“,„B2“,„C34“))

Gibts da noch ne andere Methode um einen großen Bereich zu
markieren und diesem ausgewählten Bereiche eine Funktion
zuzuordnen??

Welche Funktion denn? Bisher wurden nur die Zellen markiert (sofern denn der Code mal läuft *g)

Gruß
Reinhard

Welche Funktion denn? Bisher wurden nur die Zellen markiert
(sofern denn der Code mal läuft *g)

Die Funktion um die Zellen zu sperren.

Im Mom.:
Selection.Locked = True

Gibts da was anderes?

Habe noch gefunden:
ActiveSheet.Cells.Locked -> Für das ganze Arbeitsblatt??

lg,
Sebastian

Selection.Locked = True

Hi Sebastian,
scheinbar kann man mit Union nur jeweils 2 Bereiche zusammenführen,
also ginge es prinzipiell so:

Zellen=Array("AN41", "AM43", "AP45", "C12:smiley:17", ...)
Set Bereich=Range(Zellen(0))
For N = 1 To Ubound (Zellen)
 Set Bereich=Application.Union(Bereich, Range(Zellen(N)) 
Next N
Bereich.Locked=True

Aber kürzer geht es so:

Sub Protect\_Sheet2()
Dim Pass As String
If MsgBox(...)=vbOK Then
 With Worksheets("Verknuepfung")
 Pass="Kaffee06"
 .Activate
 .Unprotect Password:=Pass
 .Range("CF7").Value="closed"
 .Cells.Locked=False
 .Range("AN41, AM43, B12:B17, AM41, B12:G17, ...").Locked=True
 .Protect Password:=Pass, DrawingObject:=...
 End With
End If

Gruß
Reinhard