Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Union

Forumthread: Union

Union
04.01.2008 05:57:51
Mathias
Hallo,
bei folgendem Code meldet der Debugger, dass die "Methode Range für das Worksheet-Object fehlgeschlagen" ist (Laufzeitfehler 1004). Ich find einfach den Fehler nicht:

Public Sub Test()
Dim i As Integer
Dim rng As Range
Set rng = Nothing
For i = 1 To 50
If rng Is Nothing Then
Set rng = (Tabelle1.Range(Cells(2, i + 4), Cells(100, i + 4)))   ' hier kommt der  _
Laufzeitfehler 1004
Else
Set rng = Union(rng, (Tabelle1.Range(Cells(2, i + 4), Cells(100, i + 4))))
End If
Next i
If Not rng Is Nothing Then
rng.ClearContents
rng.ClearComments
End If
End Sub


Hat jemand eine Idee was da falsch ist?
Viele Grüße
Mathias

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Union
04.01.2008 06:20:00
Mustafa
Hallo und guten Morgen Matthias,
muss das nicht heissen :
Set rng = Worksheets("Tabelle1").Range(Cells(2, i + 4), Cells(100, i + 4)))
Rückmeldung obs Hilft wäre nett.
Viele Grüße aus Köln.

AW: Union
04.01.2008 06:27:00
Mathias
Hallo,
Tabelle1 ist der Codename des Worksheets. Insofern macht das keinen Unterschied. Hab beide Varianten aber auch schon getestet. Der Fehler tritt trotzdem auf.
Viele Grüße
Mathias

Anzeige
AW: Union
04.01.2008 07:37:51
Christian
Hallo Mathias,
referenzieren heißt das Zauberwort.
"Tabelle1.Range" ist korrekt aber "Cells" hängt in der Luft.
Also so:
Set rng = Tabelle1.Range(Tabelle1.Cells(2, i + 4), Tabelle1.Cells(100, i + 4))
Gruß
Christian

AW: Union
04.01.2008 09:25:54
Mathias
Hallo Christiian,
danke, das war tatsächlich DAS Zauberwort :-)
Jetzt klappt es wunderbar :-)
Viele Grüße
Mathias

Anzeige
AW: Union
04.01.2008 07:40:00
Beverly
Hi Mathias,

If rng Is Nothing Then
Set rng = Tabelle1.Range(Cells(2, i + 4), Cells(100, i + 4))
Else
Set rng = Union(rng, Tabelle1.Range(Cells(2, i + 4), Cells(100, i + 4)))
End If


Da waren die Klammern zuviel.
________________________________________

Anzeige
AW: Union
04.01.2008 08:04:23
ingUR
Hallo, Mathias,

Option Explicit
Public Sub Test()
Dim i As Integer
Dim rng As Range, ws1 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set rng = Nothing
With ws1
For i = 1 To 50
If rng Is Nothing Then
Set rng = .Range(.Cells(2, i + 4), .Cells(100, i + 4))
Else
Set rng = Union(rng, .Range(.Cells(2, i + 4), .Cells(100, i + 4)))
End If
Next i
End With
If Not rng Is Nothing Then
rng.ClearContents
End If
End Sub

Die Angaben der Bereichsbegrenzungszellen (Cell-Objekte) im RANGE-Objekt sind ebenfalls auf die Quelltabelle zu referenzieren, wenn Du das RANGE-Objekt selbst referenzierst.
Hier ist die Konnstruktion mit dem WITH-Block hilfreich, da für jeden Punkt vor einem Objekt innehalb des WITH-Blocks die Referenz einzugeben wäre:


Set rng = Worksheets("Tabelle1").Range(.Worksheets("Tabelle1")Cells(2, i + 4), Worksheets(" _
Tabelle1").Cells(100, i + 4))


Gruß,
Uwe

Anzeige
AW: Union
04.01.2008 09:23:04
Mathias
Hallo Uwe,
vielen Dank für den ausführlichen Tipp. Jetzt funktioniert es wunderbar!!! :-)
Vielen Dank auch an alle anderen für die Hinweise.
Viele Grüße
Mathias
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige