Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
316to320
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
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet mit Variabler aufrufen

Worksheet mit Variabler aufrufen
03.10.2003 23:15:21
Michael Rapp
Hallo Excel Freunde,
habe immer wieder Schwierigkeiten, variabel verschiedene Blätter auszuwählen.

ActiveWorkbook.Worksheets(i).Select
selektiert ein Blatt nach der Erstellungsreihenfolge, jedoch wenn ein Blatt gelöscht wurde, nicht mehr nach der im VBA Editor gezeigten Bezeichnung.

strname = "Blattname"
Sheets(strname).Select
selektiert nach dem Namen

Was ich brauche ist eine Möglichkeit mit einer Zahl ein Blatt aufzurufen. Dabei soll sie Zahl, den im VBA Editor gezeigten unveränderlichen Nummern entsprechen. Also statt:

sheet16.select
mit einer Variable arbeiten.

Danke für Eure Hilfe

Michael Rapp

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

Betreff
Datum
Anwender
Anzeige
AW: Worksheet mit Variabler aufrufen
03.10.2003 23:53:20
PeterW
Hallo Michael,

dass in VBA in der Regel auf Select verzichtet werden kann hast du bestimmt schon gelesen. Der einzig sichere Weg ein Arbeitsblatt anzusprechen ist über seinen Namen. Beschreib mal dein konkretes Problem, dann lässt sich vielleicht eine Lösung finden.

Gruß
Peter
Hinweis Worksheets(i), Problem offen?
04.10.2003 00:09:45
Jörg Gradert
Hallo Michael,
ActiveWorkbook.Worksheets(i).Select
selektiert ein Blatt nach der Erstellungsreihenfolge?

Nein:
ActiveWorkbook.Worksheets(i).Select
selektiert ein Blatt anhand der Reihenfolge der Anordnung der Blätter in der Arbeitsmappe.
Probier mal mein Testmakro, verändere dann die Reihenfolge der Blätter und lasse das Makro erneut laufen. Du wirst feststellen, dass die Blätter immer von vorne nach hinten durchnummeriert werden.


Sub test()
Dim i As Integer
For i = 1 To 3
ActiveWorkbook.Worksheets(i).Cells(1, 1) = i
Next i
End Sub


Hilft dir dieser Hinweis bei der korrekten Indexerstellung?

Ob deine gewünschte Lösung machbar ist, weiss ich nicht, ich habe es nicht hinbekommen.

Gruss Jörg
Anzeige
AW: Worksheet mit Variabler aufrufen
04.10.2003 00:17:33
GerdW
"Dabei soll sie Zahl, den im VBA Editor gezeigten
unveränderlichen Nummern entsprechen"

Was soll das deiner Meinung nach für eine Nummer sein,
der Codename?

Gerd
AW: Worksheet mit Variabler aufrufen
04.10.2003 02:17:55
Michael Rapp
Hallo ihr Nachteulen,

vielen Dank für die schnelle Reaktion.
Peter, arbeite wenn es geht ohne select. War nur zur Illustration der Blattbenennung.

Jörg, du hast recht. Die Anordnung der Blätter spielt bei Worksheets(i) eine Rolle.

Gerd, ich meine den Codename. Bei Worksheets(i) verändert sich die Zahl, wenn die Position des Blattesgeändert wird. Der Codename jedoch nicht. Deshalb ist es sicherer, ein Blatt darüber anzusprechen.

Meine Frage ist im Zusammenhang mit der Suche nach einem benannten Objekt. Ich lese aus der Tabelle 1 Spalte A die Worksheet Nummern der zu untersuchenden Blätter und überprüfe das Vorhandensein des gesuchten Objektes. Bei Erfolg wird in die Spalte B eine "1" geschrieben. Mein Problem besteht darin, dass wenn die Reiehenfolge der Blätter geändert wird, dann funktioniert das Makro nicht mehr. Deshalb wäre mir das Ansprechen mit dem Codenamen lieber.

Danke für Eure Hilfe
Michael

Der bisherige Code lautet:


Sub FindShape()
Dim intI As Integer    'Zähler für Blätter
Dim intShape As Integer  'Zähler für Objekte
'Schleife durch alle Blätter, die Grafiken empfangen können
For intI = 1 To 10
'Schleife durch alle Shapes des gewählten Blattes vom letzten zum ersten
For intShape = Worksheets(Sheet1.Range("A" & intI)).Shapes.Count To 1 Step -1
'Suche nach dem benannten Objekt
If left(Worksheets(Sheet1.Range("A" & intI)).Shapes(intShape).name, 13) = "FS_Plancenter" Then
'Schreibe bei Erfolg in die Tabelle1
Sheet1.Range("B" & intI).Value = 1
Exit For
End If
Next
Next
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige