Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ich brauche fachmännischen Rat

Ich brauche fachmännischen Rat
10.05.2008 14:16:00
Jürgen
Folgendes Makro bereitet mir Kopfschmerzen:

Sub Test()
Dim oWS As Object
Dim rBereich As Range
Set oWS = Worksheets("B")
Set rBereich = oWS.Range(Cells(2, 1), Cells(oWS.Cells(Rows.Count, 1).End(xlUp).Row, 1))
End Sub


Es funktioniert nur, wenn das Tabellenblatt "B" auch das aktive Tabellenblatt ist. Ist z.B. aber Tabellenblatt "A" aktiv, erhalte ich die Fehlermeldung: "Anwendungs- oder objektdefinierter Fehler". Gibt es eine Möglichkeit, das Makro so zu formulieren, dass es auch dann funktioniert, wenn "B" nicht das aktive Tabellenblatt ist? Ich möchte auf "B" kein Select anwenden.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich brauche fachmännischen Rat
10.05.2008 14:20:26
Nepumuk
Hallo Jürgen,
ja, so:
Sub Test()
    Dim oWS As Worksheet
    Dim rBereich As Range
    Set oWS = Worksheets("B")
    With oWS
        Set rBereich = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Ich brauche fachmännischen Rat
10.05.2008 14:21:00
Gerd
Hallo Jürgen,
probier mal (ungetestet)
Set rBereich = oWS.Range(oWS.Cells(2, 1), oWS.Cells(oWS.Cells(Rows.Count, 1).End(xlUp).Row, 1))
Gruß Gerd

AW: Ich brauche fachmännischen Rat
10.05.2008 14:26:00
Daniel
Hi
wenn sich RANGE() oder CELLS() auf ein anderes, als das gerade aktvie Sheet beziehen sollen, dann muss IMMER mit Sheet-Angabe referenziert werden, das gilt auch für CELLS innerhalb von RANGE (dafür kann dann die Sheetangabe vor RANGE entfallen, zur sicherheit kann man es aber stehen lassen)
korrekt wäre also

Set rBereich = oWS.Range(oWS.Cells(2, 1), oWS.Cells(oWS.Cells(Rows.Count, 1).End(xlUp).Row, 1))
oder
Set rBereich = Range(oWS.Cells(2, 1), oWS.Cells(oWS.Cells(Rows.Count, 1). _
End(xlUp).Row, 1))


btw man kann oWS auch direkt als Worksheet deklarieren:


DIM oWS as Worksheet


obs wirklich was bringt, weiß ich nicht, aber es ist vom Programmierstil her einfach sauberer
Gruß, Daniel

Anzeige
AW: Ich brauche fachmännischen Rat
10.05.2008 15:26:00
Jürgen
Vielen Dank an Alle für die Hilfe. Es funktioniert.
Gruß
Jürgen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige