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
VBA umbenennen eines Tabellenblattes
Jean
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

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA umbenennen eines Tabellenblattes
21.11.2009 08:42:48
Tino
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
Anzeige
AW: VBA umbenennen eines Tabellenblattes
21.11.2009 09:12:00
Nepumuk
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
Anzeige
Du hast schon recht.
21.11.2009 09:42:44
Tino
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
Anzeige
AW: Du hast schon recht.
21.11.2009 10:15:05
Nepumuk
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
Anzeige
ok. danke oT.
21.11.2009 10:24:06
Tino
@Nepumuk, noch eine Frage
21.11.2009 09:51:44
Tino
Hallo,
warum eigendlich Public Sub ..., welchen hintergrund hat dies.
Gru? Tino
AW: @Nepumuk, noch eine Frage
21.11.2009 10:09:06
Nepumuk
Hallo Tino,
Nur Sub und Public Sub ist eigentlich identisch. Ich erzeuge ich Prozeduren immer so:
Userbild
Public wird also immer automatisch erstellt.
Gruß
Nepumuk
ach so oT.
21.11.2009 10:14:08
Tino
AW: Danke - funktioniert
21.11.2009 17:08:08
Jean
Hallo,
für alle Beiträge vielen Dank. Die Aufgabe ist damit gelöst.
Ein schönes Wochenende.
Gruß
Jean

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige