Registriert seit: 22.09.2020
Version(en): MS 365 Family
Guten morgen Forum. ich möchte über eine For Next Schleife mehrere Tabellenblätter ansprechen und dann den Namen haben, erhalte aber immer eine Fehlermeldung, in der Zeile " Set wks = str.Name" Code: Sub Codename_Tabellenblatt() '-------------------------------------------------------------- ' Codename der Tabelle zusammen setzen, ' dann das Tabellenblatt ansprechen und den Namen ermitteln '-------------------------------------------------------------- Dim i As Integer Dim str As String Dim wks As Worksheet
For i = 1 To 5 str = "Tabelle" & i Set wks = str.Name Debug.Print wks Next i End Sub
Gruß Klauses Grüßt der niederRhein!
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo schau bitte mal ganz genau auf deinen Code,, was du programmiert hast, und was da nicht zusammen passt! Dann erkennst du selbst den Fehler. Dim wks wurde als Worksheet deklariert, Set wks = str.Name ist aber ein String, und kein Worksheet! Ändere den Code bitte mal so ab: Auf den Umweg über str As String habe ich verzichtet, das geht auch direkt in der Set Anweisung. Und wks.Name bitte in Debug setzen. mfg Gast 123 Code: For i = 1 To 5 Set wks = "Tabelle" & i Debug.Print wks.Name Next i
Registriert seit: 22.09.2020
Version(en): MS 365 Family
Hallo Gast 123, Zitat:For i = 1 To 5 Set wks = "Tabelle" & i Debug.Print wks.Name Next i er gibt mir immer einen Fehler: Fehler beim Kompilieren!
Gruß Klauses Grüßt der niederRhein!
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
06.01.2022, 10:56
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2022, 11:50 von {Boris}.)
Hi,
den Codenamen einer Tabelle kann man nicht "zusammenbasteln".
[EDIT] Zumindest nicht "herkömmlich" mit Verkettung. Warkings hat die Lösung über das VBA-Projekt ja aufgezeigt.
Registriert seit: 18.10.2020
Version(en): 365
06.01.2022, 11:12
(Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2022, 11:25 von Warkings.)
Den Codename erhältst Du z.B. mit Code: Dim wkb As Workbook Dim wks As Worksheet Set wkb = ThisWorkbook For Each wks In wkb.Sheets Debug.Print wks.CodeName Next
https://docs.microsoft.com/en-us/office/...t.codenameUnd so kann man den Codenamen ändern, vorausgesetzt man hat Zugriff auf das VB Object Model Code: Sub chgCodename() Dim wkb As Workbook, sheet As Object Set wkb = ThisWorkbook 'wkb.VBProject.Name = "VBAProject_42" ' So könnte man den Projektnamen ändern ' Beispiel, um den Codenamne des ersten Blattes zu ändern Set sheet = wkb.VBProject.VBComponents(wkb.Sheets(1).CodeName) sheet.Name = "new_code_name" End Sub
Registriert seit: 22.09.2020
Version(en): MS 365 Family
# Warkings , klappt perfekt!Vielen Dank an alle!!
Gruß Klauses Grüßt der niederRhein!
Registriert seit: 22.09.2020
Version(en): MS 365 Family
Hab noch ein Problem, wie kann man die CodeName in eine Inputbox untereinander anzeigenlassen,
ich schaff es nur das mir für jedes Tabellenblatt, jeweils eine Inputbox erscheint?
Gruß Klauses Grüßt der niederRhein!
Registriert seit: 18.10.2020
Version(en): 365
Abgesehen davon, dass
-das nicht geht
- man dafür eher eine Listbox/Combobox in einer Userform verwenden sollte
- man nich weiss, wofür das gut sein soll
ist das auch ein neues Thema.
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo wofür soll man für die Zusatzfrage einen neuen Thread aufmachen? Probier es doch einfach mal so: (geht auch mit MsgBox als Anzeige) mfg Gast 123 Code: Sub test2() Dim wkb As Workbook, gTxt As String Dim wks As Worksheet, Eingabe As String Set wkb = ThisWorkbook
For Each wks In wkb.Worksheets gTxt = gTxt & wks.CodeName & vbLf Next wks Eingabe = InputBox(gTxt, , Worksheets(1).CodeName) End Sub
Registriert seit: 22.09.2020
Version(en): MS 365 Family
Ich möchte mit einer Inputbox, das der Anwender eine Zahl eingibt und in der Inputbox die Auswahlmöglichkeiten drin stehen! Der Code funktioniert auch, ich wollte versuchen ihn etwas kürzer zu gestalten! Trotz dem Danke für die Hilfe! Code: Sub Tabelleneingabe() '------------------------------------------------------------------------------ ' in den Untergruppen (Tabellenblättern), neuen Artikel einfügen '------------------------------------------------------------------------------
Dim Eingabe As String Dim IB As String Dim lz As Long
Anfang: IB = InputBox("Bitte geben Sie die Nummer der Untergruppe ein." _ & Chr(10) & Chr(10) & Chr(9) _ & "1. " & Tabelle1.Name & Chr(10) & Chr(9) _ & "2. " & Tabelle2.Name & Chr(10) & Chr(9) _ & "3. " & Tabelle3.Name & Chr(10) & Chr(9) _ & "4. " & Tabelle4.Name & Chr(10) & Chr(9) _ & "5. " & Tabelle5.Name & Chr(10) & Chr(9) _ & "6. " & Tabelle6.Name & Chr(10) & Chr(9) _ & "7. " & Tabelle7.Name & Chr(10) & Chr(9) _ & "8. " & Tabelle8.Name & Chr(10) & Chr(9) _ & "9. " & Tabelle9.Name & Chr(10) & Chr(9) _ & "10. " & Tabelle10.Name & Chr(10) & Chr(9) _ & "11. " & Tabelle11.Name & Chr(10) & Chr(9) _ & "12. " & Tabelle12.Name & Chr(10) & Chr(9) _ & "13. " & Tabelle13.Name & Chr(10) & Chr(9) _ & "14. " & Tabelle14.Name & Chr(10) & Chr(9) _ & "15. " & Tabelle15.Name & Chr(10) & Chr(9) _ & "16. " & Tabelle16.Name & Chr(10) & Chr(9) _ & "17. " & Tabelle17.Name & Chr(10) & Chr(9) _ & "18. " & Tabelle18.Name & Chr(10) & Chr(9)) If IB = "" Then Exit Sub Dim wks As Worksheet
If IB = 1 Then Set wks = Tabelle1 ElseIf IB = 2 Then Set wks = Tabelle2 ElseIf IB = 3 Then Set wks = Tabelle3 ElseIf IB = 4 Then Set wks = Tabelle4 ElseIf IB = 5 Then Set wks = Tabelle5 ElseIf IB = 6 Then Set wks = Tabelle6 ElseIf IB = 7 Then Set wks = Tabelle7 ElseIf IB = 8 Then Set wks = Tabelle8 ElseIf IB = 9 Then Set wks = Tabelle9 ElseIf IB = 10 Then Set wks = Tabelle10 ElseIf IB = 11 Then Set wks = Tabelle11 ElseIf IB = 12 Then Set wks = Tabelle12 ElseIf IB = 13 Then Set wks = Tabelle13 ElseIf IB = 14 Then Set wks = Tabelle14 ElseIf IB = 15 Then Set wks = Tabelle15 ElseIf IB = 16 Then Set wks = Tabelle16 ElseIf IB = 17 Then Set wks = Tabelle17 ElseIf IB = 18 Then Set wks = Tabelle18 Else MsgBox "Es dürfen nur Zahlen eingegeben werden bzw. die Eingabe wurde abgebrochen !", vbCritical, "Nur Zahlen eingeben !" GoTo Anfang End If
wks.Select lz = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row + 1 Cells(lz, 1) = "Insert" Sheets("Neu Anlage").Select Range("A9:h9").Select Selection.Copy wks.Select Cells.Find(what:="insert", after:=ActiveCell, LookIn:=xlFormulas, lookat _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Activate ActiveSheet.Paste Range("A9").Select tab_Anlage.Select Range("C9").Select Selection.ClearContents Range("C9").Select
End Sub
Gruß Klauses Grüßt der niederRhein!
|