Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA umbenennen eines Tabellenblattes | Herbers Excel-Forum


Betrifft: VBA umbenennen eines Tabellenblattes von: Jean Gitanes
Geschrieben am: 21.11.2009 08:02:13

Hallo,

wie lässt sich denn per VBA mit Hilfe einer Inputbox der bisherige Tabellenname Tabelle1
a. in der Mappe mit dem Makro umbenennen
b. der Tabellenname einer anderen Mappe (zb. Kunden.XLS in D:\) umbenennen?

Gruß
Jean

  

Betrifft: AW: VBA umbenennen eines Tabellenblattes von: Tino
Geschrieben am: 21.11.2009 08:42:48

Hallo,
zum Beispiel so. (siehe unten)

Um die Tabelle einer anderen Datei umbenennen zu können.
1. Muss diese offen sein. (eventuell öffnen und danach wieder schließen)
2. sollte sich diese in derselben Instanz befinden (geht anders auch aber umständlicher)
Dann wie unten nur mit der Datei davor Workbooks("Mappe2.xls").Sheets(1).Name = strName


Sub bsp()
Dim strName As String

Error_Nochmal: strName = InputBox("Name der Tabelle")
If StrPtr(strName) <> 0 Then
 On Error Resume Next
    ThisWorkbook.Sheets(1).Name = strName
    If Err.Number <> 0 Then
     MsgBox "Geben Sie einen gültigen Tabellennamen ein"
     Err.Number = 0
     GoTo Error_Nochmal:
    End If
 On Error GoTo 0
End If

End Sub
Gruß Tino


  

Betrifft: AW: VBA umbenennen eines Tabellenblattes von: Nepumuk
Geschrieben am: 21.11.2009 09:12:00

Hallo Tino,

warum On Error Goto 0 ? Ok, Resume Next ist keine Fehlerbehandlung sondern nur eine Unterdrückung. Und wenn die Prozedur aus einer anderen heraus aufgerufen wird, würde der Fehler durchgeschleift. Wird dann in der aufrufenden Prozedur der Fehler abgefragt, könntest du einen Errorhandler aufrufen. Aber die Resume Next - Anweisung wird nicht weitergegeben, die ist nur auf Prozedurebene gültig.

Und was haben wir über Goto gelernt?

Public Sub Beispiel()
    Dim strName As String
    On Error Resume Next
    Do
        strName = InputBox("Name der Tabelle")
        If StrPtr(strName) = 0 Then Exit Do
        ThisWorkbook.Sheets(1).Name = strName
        If Err.Number <> 0 Then
            MsgBox "Geben Sie einen gültigen Tabellennamen ein"
            Err.Clear
        Else
            Exit Do
        End If
    Loop
End Sub

So habe ich das bei HP vor 25 Jahren beigebracht bekommen.

Gruß
Nepumuk


  

Betrifft: Du hast schon recht. von: Tino
Geschrieben am: 21.11.2009 09:42:44

Hallo,
aber viele kopieren sich den Code in eine bestehende Prozedur und rufen diese nicht separat auf.
Bei mir müsste nur die on error oben und unten stehen, sonst wird bei Abbruch diese nicht aufgehoben.

Dim strName As String
On Error Resume Next
Error_Nochmal: strName = InputBox("Name der Tabelle")
If StrPtr(strName) <> 0 Then
 
    ThisWorkbook.Sheets(1).Name = strName
    If Err.Number <> 0 Then
     MsgBox "Geben Sie einen gültigen Tabellennamen ein"
     Err.Number = 0
     GoTo Error_Nochmal:
    End If

End If
On Error GoTo 0
Was Du gegen GoTo hast weiß ich nicht,
ok braucht vielleicht etwas mehr Zeit um die Sprungmarke zu finden und ist bei größerem Code etwas umständlicher zu lesen, aber bei einem so kleinen Code sehe ich das weniger kritisch.
Oder welche Nachteile gibt es da noch.

Gruß Tino


Gruß Tino


  

Betrifft: AW: Du hast schon recht. von: Nepumuk
Geschrieben am: 21.11.2009 10:15:05

Hi Tino,

Nachteile außer der lesbarkeit gibt es keine. Ich benutze es auch ab und zu um größere Programmteile zu überspringen da ich sonst zu viele Verschachtelungen von If - End If bekomme und mein Code einen halben Meter vom rechten Rand weg steht. Das ist auch nicht gut lesbar.

121 If lngCounter = 0 Then

'//no projects found
122 Unload frm_Progress
123 Call LOGGER_Log_This(PROCEDURENAME, "Keine Projekte gefunden." & vbLf & vbLf & _
    "Möglicherweise ist der Pfad in den Systemeinstellungen falsch angegeben.", True, LEVEL_WARNING)
124 GoTo sub_exit

125 End If

Gruß
Nepumuk


  

Betrifft: ok. danke oT. von: Tino
Geschrieben am: 21.11.2009 10:24:06




  

Betrifft: @Nepumuk, noch eine Frage von: Tino
Geschrieben am: 21.11.2009 09:51:44

Hallo,
warum eigendlich Public Sub ..., welchen hintergrund hat dies.

Gru? Tino


  

Betrifft: AW: @Nepumuk, noch eine Frage von: Nepumuk
Geschrieben am: 21.11.2009 10:09:06

Hallo Tino,

Nur Sub und Public Sub ist eigentlich identisch. Ich erzeuge ich Prozeduren immer so:



Public wird also immer automatisch erstellt.
Gruß
Nepumuk


  

Betrifft: ach so oT. von: Tino
Geschrieben am: 21.11.2009 10:14:08




  

Betrifft: AW: Danke - funktioniert von: Jean Gitanes
Geschrieben am: 21.11.2009 17:08:08

Hallo,

für alle Beiträge vielen Dank. Die Aufgabe ist damit gelöst.
Ein schönes Wochenende.
Gruß
Jean


Beiträge aus den Excel-Beispielen zum Thema "VBA umbenennen eines Tabellenblattes"