Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
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

Syntax zu Codenamen

Syntax zu Codenamen
Jörg-HH
Guten Abend zusammen,
dieser Code stoppt an der With-Zeile.

Dim strWsName As String
Dim objChbox As Variant
For Each objChbox In Me.Controls
If TypeName(objChbox) = "CheckBox" Then
If Left(objChbox.Name, 3) = "Che" Then
If objChbox.Value = True Then
strWsName = "Tabelle" & Mid(objChbox.Name, 9)
With ThisWorkbook(strWsName)
MsgBox "Mach was auf Tabelle " & strWsName
End With
Else
MsgBox "bubu"
End If
End If
End If
Next
Ich versuche überall, den Codenamen anzusprechen. In der With-Zeile aber frage ich plötzlich nach dem Blattnamen - kann das funktionieren?
Die Boxen sind ja nach den Codenamen durchnumeriert - da müßte doch sowas ähnliches stehen wie
With ThisWorkbook. "Tabelle"&Codenummer
die Codenummer wäre dann ja strWsName , aber wie häng ich das da dran?
Danke für'n Tip...
Jörg

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

Betreff
Benutzer
Anzeige
AW: Syntax zu Codenamen
14.11.2009 23:52:53
Oberschlumpf
Hi Jörg
Was meinst du mit "Codenamen"?
Die Zeile
With ThisWorkbook(strWsName)
funktioniert so nicht, da ThisWorkbook ohne zusätzliche Parameter stehen muss.
Versuch mal einfach nur
With ThisWorkbook
Mit ThisWorkbook.usw sprichst du IMMER DIE Datei an, in der das Makro steht, welches gerade ausgeführt wird.
Oder wenn es sich mit dem Namen einer Excel-Datei in der Var strWsName um eine andere Datei handelt, die ebenfalls geöffnet ist, dann versuch
With Workbooks(strWsName)
Hilfts?
Ciao
Thorsten
Codenamen
15.11.2009 00:38:37
Jörg-HH
Hi Thorsten
Codename ist der Name Tabelle1 usw, der links im Editor steht und sich nicht ändert (im Gegensatz zum Blattnamen). Bei der Box ist das der Name CheckBox1 (statt zB BoxMeier als Caption)
In der Withzeile müßte also statt zB Worksheets("Preisliste") etwas stehen wie Worksheets.Tabelle5 oder evtl nur Tabelle5, wobei die 5 aus den vorherigen Zeilen generiert wird.
Da sind soundsoviel Boxen in der UF, die in soundsovie Tabellen was machen. Heißen aber alle unterschiedlich. Also habe ich die Codenamen der Boxen den Tabellen angepaßt - Checkbox5 ist für Tabelle5 zuständig.
hoffe, das war verständlich...?
Jörg
Anzeige
AW: Codenamen
15.11.2009 00:47:43
Oberschlumpf
Hi Jörg
Versuch mal
With ThisWorkbooks.Sheets("Tabelle" & Right(objChbox.Name, 1))
aus "Tabelle" & Right(objChbox.Name, 1) ergibt sich
"Tabelle" & Right(objChbox.Name, 1) =
"Tabelle" & letztes Zeichen vom Namen der Checkbox =
"Tabelle" & "5" (bei CheckBox5) =
"Tabelle5"
Hilfts?
Ciao
Thorsten
AW: Codenamen
15.11.2009 01:11:45
IngGi
Hallo zusammen,
mit den Codenamen der Tabellenblätter funktioniert das nicht, da der Codename - im Gegensatz zum Blattnamen - nicht als String übergeben wird. Eine Möglichkeit wäre, alle Tabellenblätter in einer For Each-Schleife abzuklappern und das gesuchte Tabellenblatt dann an eine Objektvariable zu übergeben, über die sich das Tabellenblatt dann ansprechen ließe. Also sowas:
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName = strWsName Then Exit For
Next 'ws
If ws Is Nothing Then
MsgBox "Es gibt kein Tabellenblatt mit dem Codenamen" _
& strWsName, vbCritical
End If
In der If-Struktur wird dann noch geprüft, ob es das gesuchte Tabellenblatt überhaupt gibt.
Danach lässt sich z.B. die Zelle A1 auf dem Tabellenblatt, statt innerhalb einer With-Anweisung mit
.Range("A1")
über die Objektvariable ws mit

ws.Range("A1")
ansprechen.
Gruß Ingolf
Anzeige
AW: Codenamen
15.11.2009 01:21:03
Oberschlumpf
Hi Ingolf
Das verstehe ich nicht.
Ob ich in einem Code nun (wenn Tabelle1 aktiv ist)
Range("A1").Value = "Test"
oder Sheets("Tabelle1").Range("A1").Value = "Test"
verwende, wird in beiden Fällen in Tabelle1 in Zelle A1 "Test" stehen.
Somit kann ich doch den Blattnamen auch durch "Summieren" von Strings bilden.
oder was hab ich jetzt nicht verstanden?
Ciao
Thorsten
muß 'ne Schleife sein
15.11.2009 02:19:38
Jörg-HH
Hi Thorsten,
das mit Right geht nicht, weil das teilweise auch zweistellige Zahlen sind. Mid statt Right wäre ein Weg.
Was Ingolf meint, wußte ich bis dahin nicht, aber dies Wissen wurde mir durch die Wirklichekeit aufgedrängt :-) .... Konstruktionen wie With ThisWorkbooks.Sheets("Tabelle" & Right(objChbox.Name, 1)) habe ich (mit Mid statt Right) in allen erdenklichen Variationen auch vergeblich versucht.
Folgende Variante läuft:
Private Sub cmd_ToDo_ReBlDruck_Click()
Dim strWsName As String
Dim objChbox As Variant
Dim ws As Worksheet
If DruckerWaehlen = True Then     'diese Funktion liegt in modGlobal
For Each objChbox In Me.Controls
If TypeName(objChbox) = "CheckBox" Then
If Left(objChbox.Name, 3) = "Che" Then
If objChbox.Value = True Then
strWsName = "Tabelle" & Mid(objChbox.Name, 9)
For Each ws In ThisWorkbook.Worksheets
If ws.CodeName = strWsName Then
With ws
.Range("Druckbereich").Cells.Interior.ColorIndex = xlNone
.Range("Druckbereich").PrintOut
.Range("Druckbereich").Cells.Interior.ColorIndex = 15
Exit For
End With
End If  'ws.CodeName
Next ws
End If    'objChbox
End If    'Left
End If    'TypeName
Next      'objChbox
End If    'DruckerWaehlen
End Sub
so - und nu gehn wir alle inne Heia...
Schönen Sonntag!
Jörg
Anzeige
AW: Codenamen
15.11.2009 15:00:23
IngGi
Hallo Thorsten,
du hast vollkommen recht, soweit ich ein Tabellenblatt über den normalen Excel-Blattnamen _ anspreche. Das geht so

ThisWorkbook.Sheets("Tabelle1").Range("A1")
hier wird der Blattname in Anführungszeichen, also als String übergeben. Und dieser String lässt sich natürlich beliebig zusammenstoppeln. Wenn ich dasselbe Tabellenblatt über seinen Codenamen anspreche, sieht das so aus

Tabelle1.Range("A1")
Hier ist Tabelle1 eben kein String, der sich zusammenstoppeln ließe. Das Tabellenblatt wird direkt als Objekt angesprochen, wie zum Beispiel eine Textbox auf einem Userformular

UserForm1.TextBox1.Value
Gruß Ingolf
Anzeige
AW: Codenamen
15.11.2009 20:05:01
Oberschlumpf
Hi Ingolf
Ja, danke. Das was ich zuerst nich verstand, war eben der Unterschied Blatt/Codename.
Aber nun bin auch ich wieder ein wenig schlauer ;-)
Ciao
Thorsten

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige