Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

Anzeige
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

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.
________________________________________

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige