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

Worksheets über VBA aktivieren

Worksheets über VBA aktivieren
06.06.2005 11:21:48
Stephan
Hallo Excel-Freaks. Dank eurer mithilfe klappt ja das jetzt mit der automatischen Generierung der Ranges mit VBA. Nur noch ein Problem, dass sich daraus ergben hat. Ich möchte verschiedene Worksheets in einem Workbook ansprechen... leider aktiviert er mir aber immer nur das bereits aktivierte workbook... untenstehender code
Beispiel für einen Range (insgesamt sind es 3)
'Für die Aktivierung/Auswahl der Ranges
With ActiveWorkbook.Worksheets("sheet1")
'Für das Bilden der Ranges
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Rows(i & ":" & i)) 0 Then
lastR = i
Exit For
End If
Next i
ActiveWorkbook.Names.Add Name:=ActiveSheet.Name, RefersTo:= _
"=" & ActiveSheet.Name & "!" & _
"$28:$" & lastR + ActiveSheet.UsedRange.Row - 1
End With
Frage ist nun, wie bekomme ich es hin, dass er alle Worksheets nacheinander im Workbook aktiviert werden. Eigentlich müsste dies doch mit meiner With-Anweisung klappen, oder ?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheets über VBA aktivieren
06.06.2005 11:46:54
Rene
Hi,
du kannst durchzählen, wie viele Sheets du hast und dann den Zähler auf das erste, dann auf das zweite , auf das dritte... setzen
gruss René
Bitte Rückmeldung
AW: Worksheets über VBA aktivieren
06.06.2005 11:50:55
ChrisSP
Hi Stephan,
deklarier noch ne Variable als "Worksheet" z.B. "Dim blatt As Worksheet"
und dann arbeitest du mit For each
z.b. For each blatt in activeworkbook.sheets
*** deine Anweisungen
next
Gruss
Chris
AW: Worksheets über VBA aktivieren
06.06.2005 14:45:38
Stephan
Danke für das rege Interesse. Hat mich echt weitergebracht. Das Problem, er zieht sich wieder "nur" das erste Worksheet aus meinem geöffneten Blatt heraus und bildet auch nur für das erste Blatt dementsprechend den Range. Die andere (Blatt 2-4) bleiben wieder "unberührt". Wo steckt der Fehler. Vermute beim durchzählen der Schleife...

Sub DatenRangesBilden()
Dim i As Long, lastR As Long
Dim blatt As Worksheet
' Range für sheet1, sheet2 und sheet3, sheet4 bilden
For Each blatt In ActiveWorkbook.Sheets
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Rows(i & ":" & i)) <> 0 Then
lastR = i
Exit For
End If
Next i
ActiveWorkbook.Names.Add Name:=ActiveSheet.Name, RefersTo:= _
"=" & ActiveSheet.Name & "!" & _
"$28:$" & lastR + ActiveSheet.UsedRange.Row - 1
Next
End Sub

Anzeige
AW: Worksheets über VBA aktivieren
06.06.2005 14:59:07
ChrisSp
du musst an Stelle von "ActiveSheet" jetzt "Blatt" nehmen, da dies dann bei jedem Schleifendurchlauf das aktuelle Tabellenblatt (#1, #2, #3 etc.) repräsentiert.
Gruss
Chris
AW: Worksheets über VBA aktivieren
06.06.2005 11:50:58
Rene
Das geht dann in etwa so:
ich habe deinen code mal eingesetzt. musst halt noch die Variable gescheit deklarieren
Dim i As Integer
For i = 1 To Worksheets.Count
'Für die Aktivierung/Auswahl der Ranges
With ActiveWorkbook.Worksheets("sheet1")
'Für das Bilden der Ranges
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Rows(i & ":" & i)) 0 Then
lastR = i
Exit For
End If
Next i
ActiveWorkbook.Names.Add Name:=ActiveSheet.Name, RefersTo:= _
"=" & ActiveSheet.Name & "!" & _
"$28:$" & lastR + ActiveSheet.UsedRange.Row - 1
End With
Next i
ohne deinen Code:
Dim i As Integer
For i = 1 To Worksheets.Count
' hier dein Code
Next i
gruss René
Bitte Rückmeldung
Anzeige
AW: Worksheets über VBA aktivieren
06.06.2005 15:21:18
Stephan
Achja, Mensch das mit dem Durchzählen hätte ich mir echt sparen koennen. Aber jetzt klappt schon mal das. Die einzige Hürde ist nun, dass sich das Programm anscheinend den UsedRange aus dem ersten Sheet merkt und dann alle andere Range auch mit der Größe aus dem erste Sheets bildet.
Bsp : Sheet 1 : 28-43.Zeile werden "benutzt" -> UsedRange bis 43
Sheet 2 : 28-65.Zeile werden "benutzt" -> UsedRange bis 43 !!(sollte aber bis 65!)

Dieses Problem setzt sich auf allen Sheets fort. Wie könnte ich jetzt nun denn die Variable die durchzählt so löschen, dass mir bei jedem sheet auch der richtige Wert zurückgegen wird ?

Sub DatenRangesBilden()
Dim i As Long, lastR As Long
Dim blatt As Worksheet
' Range für sheet1, sheet2 und sheet3 bilden
For Each blatt In ActiveWorkbook.Sheets
For i = blatt.UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Rows(i & ":" & i)) <> 0 Then
lastR = i
Exit For
End If
Next i
ActiveWorkbook.Names.Add Name:=blatt.Name, RefersTo:= _
"=" & blatt.Name & "!" & _
"$28:$" & lastR + blatt.UsedRange.Row - 1
Next
End Sub

Anzeige
AW: Worksheets über VBA aktivieren
07.06.2005 08:38:56
ChrisSp
Hi Stephan,
ich steh gerade ein bisschen auf dem Schlau - muss wohl an der Zeit liegen! Kannst du mir kurz erklären, was du überhaupt machen willst - habe deinen alten Threat nicht mitverfolgt. So wie ich das interpretiere, wird die Datei immer wieder neu abgespeichert, mit dem entsprechenden Namen, der sich aus dem Name mit Zusatz (Erg. von UsedRage ... )ergibt.
Vielleicht kannst du auch ne Beispiel posten
Gruss
Chris
AW: Worksheets über VBA aktivieren
07.06.2005 12:10:31
Stephan
Schon erledigt :-}

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige