Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1172to1176
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
Inhaltsverzeichnis

Select Case ... Sheet.CodeName

Select Case ... Sheet.CodeName
Peter

Guten Tag
Ich möchte, dass ein Code nur ausgeführt wird, wenn der Tabellen-Codename Tabelle01, Tabelle02, Tabelle03, .... oder Tabelle25 ist.
Auf Codename greiffe ich zurück, da die Tabellennamen gelegentlich angepasst werden (ohne dass der Inhalt ändert).
Das versuche ich mich Select Case ab, funktioniert jedoch nicht. Ich vermute, dass die Zeile Select Case Seheet.CodeName geändert werden muss, da letztlich eine Zahl verglichen wird.
Aber was muss dort stehen?
Gruss, Peter
Sub Doppelte_anzeigen()
Dim strAnzeige As String
Dim Sheet As Worksheet
Set Sheet = ActiveSheet
With ActiveSheet
Select Case Sheet.CodeName
Case Right(Sheet.CodeName, 2) * 1 

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Select Case ... Sheet.CodeName
16.08.2010 10:44:55
JogyB
Hallo Peter,
wieso nimmst Du Select? Du hast ja nur zwei Ausführungsmöglichkeiten, da würde ich dann doch eher zu IF...THEN...ELSE greifen. So wie Du es gemacht hast geht es nicht, da immer nur mit dem verglichen werden kann, was bei SELECT CASE steht.
Und wozu das WITH, wenn Du es dann gar nicht verwendest?
Hier mal zwei Möglichkeiten:
Sub Doppelte_anzeigen()
Dim strAnzeige As String
With ActiveSheet
If .CodeName Like "Tabelle##" Then
If CLng(Right(.CodeName, 2)) 

oder
Sub Doppelte_anzeigen()
Dim strAnzeige As String
With ActiveSheet
Select Case .CodeName
Case "Tabelle01" To "Tabelle25"
Case Else
End Select
End With
End Sub

Gruß, Jogy
Anzeige
AW: Select Case ... Sheet.CodeName
16.08.2010 10:55:04
Peter
Hallo Jogy
Vielen Dank. Das hat mir geholfen. Das With verwende ich schon, nur habe ich diese Zeilen bei der Anfrage gelöscht.
Gruss, Peter
Sub Doppelte_anzeigen()
Dim strAnzeige As String
Dim Sheet As Worksheet
Set Sheet = ActiveSheet
With ActiveSheet
Select Case Sheet.CodeName
Case "Tabelle01" To "Tabelle25"
strAnzeige = Prüfung(.Range(.Cells(8, 3), .Cells(1000, 3)), 1)
If strAnzeige = "" Then Application.StatusBar = "keine Doppeleinträge"
If strAnzeige = "" Then Exit Sub
Application.StatusBar = strAnzeige
Case Else
Application.StatusBar = "Aktion nur in Tabellenblättern " & Tabelle01.Name & "- " & Tabelle25. _
Name & " möglich"
End Select
End With
End Sub

Anzeige
AW: Select Case ... Sheet.CodeName
16.08.2010 10:52:56
Gerd
Hallo Peter,
wenn die Prozedur in einem allgemeinen Modul steht, reicht bezügl. ActiveSheet dies:
Sub Doppelte_anzeigen()
Select Case Int(Mid(CodeName, 8))
Case Is 
P.S.: Eine Variable wuerde ich nicht "Sheet" benennen.
Gruß Gerd
AW: Select Case ... Sheet.CodeName
16.08.2010 10:56:46
Peter
Hallo Gerd
Danke auch für deine Lösung un den Hinweis betreffend Variable.
Gruss, Peter
AW: Select Case ... Sheet.CodeName
16.08.2010 11:06:27
JogyB
Hallo Gerd,
das Problem an der Methode ist, dass bei einem Codenamen, der ab der 8. Stelle nicht nur Zahlen enthält, zwangsläufig eine Fehlermeldung erfolgt.
Gruß, Jogy
AW: @ JogyB
16.08.2010 11:13:23
Gerd
Hallo Jogy,
ich sehe absolut keine Notwendigkeit, die Codenamen von Blättern zu ändern.
Gruß Gerd
Anzeige
AW: @ JogyB
16.08.2010 11:35:41
JogyB
Hallo Gerd,
da er eine Tabelle01 hat, hat er anscheinend etwas geändert. Und außerdem ist es wie immer: Nur weil man selbst keine Notwendigkeit für etwas sieht, muss das nicht auch für andere gelten. Oder heissen Deine Module noch Modul1 etc.?
Gruß, Jogy
AW: @ JogyB
16.08.2010 12:07:39
Gerd
Hallo Jogy,
interessehalber: In welchen Fällen änderst Du die Codenamen von Tabellenblättern?
Gruß Gerd
AW: @ JogyB
16.08.2010 12:21:46
JogyB
Hallo Gerd,
ein Beispiel wären ein paar Vorlagendateien, die ich habe. Die gibt es in deutsch und englisch, d.h. der Blattname ist nicht eindeutig. Da nicht immer alle Blätter in der Mappe benötigt und dann gelöscht werden, ist auch der Index nicht eindeutig. Der Codename kann dagegen in allen Sprachen identisch sein.
Ich nehme es auch ganz gerne, wenn ein Blatt von den verschiedenen Prozeduren immer wieder aufgerufen werden muss. Dann brauche ich nicht jedesmal mit Thisworkbook.Worksheets(...) arbeiten, sondern kann es direkt ansprechen. Dazu bräuchte ich den Codenamen natürlich nicht ändern, nur da ziehe ich einen aussagekräftigen Namen doch dem Tabelle1 vor. Meine Variablen nenne ich ja auch nicht String1, String2 etc. ;)
Gruß, Jogy
Anzeige
AW: @ JogyB
16.08.2010 12:50:07
Gerd
Hallo Jogy,
kommt drauf an, ggf. gebe ich meinen Blatt-Objektvariablen sprechende Namen.
Gruß Gerd
CodeName-Auswahl ohne Select Case
16.08.2010 11:33:06
Erich
Hi Peter,
hast du die Codenamen deiner Tabellen geändert?
Wenn nicht, wären die ersten 9 Codenamen Tabelle1 bis Tabelle9, nicht aber Tabelle01 bis Tabelle09.
Gleichgültig wäre das hierbei:

Sub Doppelte_anzeigen()
Dim strAnzeige As String
Dim strNr As String
With ActiveSheet
strNr = Mid(.CodeName, 8, 3)
If IsNumeric(strNr) Then
If CLng(strNr) > 0 And CLng(strNr) 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: CodeName-Auswahl ohne Select Case
16.08.2010 20:31:34
Peter
Hallo Erich
Danke für deinen Beitrag. Ja, ich habe die Codenamen geändert.
In der entsprechenden Datei (Vorlage) hat es auch 25 Tabellen, benannt mit "frei01", "frei02", etc., "frei25".
Je nach Eingaben in der Steuerungstabelle, werden diese Tabellen dann automatisch unbenannt. Deshalb arbeite ich in deisem Fall im VBA mit den Codenamen.
Freundlicher Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige