Registerblätter in Excel benennen (VBA)
#1
[
Bild bitte so als Datei hochladen: Klick mich!
]

Hallo,

ich würde gerne die Informationen aus A30:B32 per VBA als Überschrift des Reiters in Excel verwenden.
Die max. Anzahl an Zeichen ist meines Wissens nach begrenzt, daher wäre es super wenn dann im Reiter als Überschrift der Ort und die Straße angezeigt werden.
Hat da jemand ne Idee?

Grüße
Top
#2
Moin!
Zunächst:
Spalte A brauchst Du doch gar nicht, da offensichtlich in jedem Blatt gleich.
Max. Zeichenzahl imo 255
Bevor ich Dir ein Makro schreibe (ist ja keine Hexerei):
Ich würde mir den Aufbau der Datei überlegen!
Gleiche Daten(sätze) gehören in ein Blatt.
Die Anzeige oder Auswertung kannst Du dann in jeweils einem zusätzlich Blatt ("Formular" welches mittels SVerweis() o.ä. gefüllt wird [Auswahl per WE oder Ort/Strasse] sowie einer evtl. Pivot-Auswertung) vornehmen.

Außerdem ist eine Blattbezeichnung von ~ 200 Zeichen kontraproduktiv:
Du siehst auf der Oberfläche ja nur 2-3 "Reiter".

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Moin Ralf,

der Aufbau müsste so bestehen bleiben. Pro Blatt sollen alle Parameter einer Liegenschaft angezeigt werden.
Ist es mit deinem Makro dann möglich, dass in Blatt1 im Reiter Düsseldorf + Straße steht & im nächsten Reiter andere Stadt + Straße usw.?
Die Informationen zum Standort stehen immer in B31 und B32.


Grüße
Top
#4
Dein Wunsch ist mir Befehl!  :21:
(ändert aber nichts an meiner grundsätzlichen Kritik zum Mappenaufbau)


In ein allgemeines Modul, danach Alt+F8, Makro RPP starten.
Sub RPP()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
  On Error Resume Next
  wks.Name = wks.Cells(31, 2) & Chr(32) & wks.Cells(32, 2)
  If Err.Number <> 0 Then
    MsgBox wks.Cells(31, 2) & Chr(32) & wks.Cells(32, 2) & " ist kein zulässiger Name!" & vbLf & _
    "Entweder unzulässiges Zeichen oder Name bereits vergeben!"
  End If
  On Error GoTo 0
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • BachFel
Top
#5
Shocked 
Verstehe deine Kritik sehr wohl, ist tatsächlich auch berechtigt =)
Eine letzte Frage:
Kann man das Makro auch nur auf bestimmte Tabellenblätter anwenden (ohne noch ein VBA zu benutzen)?
Top
#6
So ganz verstehe ich Deine Nachfrage nicht.
Folgender Code lässt das Blatt "Hier nicht" außen vor:
Sub RPP()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
  If wks.Name <> "Hier nicht" Then
    On Error Resume Next
    wks.Name = wks.Cells(31, 2) & Chr(32) & wks.Cells(32, 2)
    If Err.Number <> 0 Then
      MsgBox wks.Cells(31, 2) & Chr(32) & wks.Cells(32, 2) & " ist kein zulässiger Name!" & vbLf & _
                              "Entweder unzulässiges Zeichen oder Name bereits vergeben!"
    End If
    On Error GoTo 0
  End If
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • BachFel
Top
#7
Brauche manchmal ein bisschen länger, pardon..
Und jetzt tatsächlich die letzte Frage bevor du/ ihr Ruhe von mir habt:

Gibt es die Möglichkeit wenn ich ein neues Tabellenblatt aufmachen will, dass das neue dann eine Kopie des vorherigen ist. Das ganze soll automatisch passieren, ich will also nicht per Rechtsklick das Blatt kopieren. Geht sowas überhaupt?
Top
#8
Und schon beißt sich die Katze in den Schwanz!  :21:
Bei "meiner" vorgeschlagenen Liste hättest Du das Problem gar nicht erst.
Sei es drum:
Du kannst Dir natürlich eine leere Vorlage basteln,
diese ausblenden
und mittels eines per Shortcut gestarteten kleinen Makros eine Kopie derselben als letztes Blatt einfügen.

Sub neuesWKS()
Application.ScreenUpdating = False
With Worksheets("Vorlage")
  .Visible = xlSheetVisible
  .Copy After:=Sheets(Sheets.Count)
  .Visible = xlSheetHidden
End With
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#9
(22.08.2017, 10:44)BachFel schrieb: Gibt es die Möglichkeit wenn ich ein neues Tabellenblatt aufmachen will, dass das neue dann eine Kopie des vorherigen ist. Das ganze soll automatisch passieren, ich will also nicht per Rechtsklick das Blatt kopieren. Geht sowas überhaupt?

Schiebe das letzte Blatt mit gedrückter Strg-Taste und gedrückter linker Maustaste nach rechts.

Gruß Uwe
Top
#10
Ich gehe dann doch eher von einer "Vorlage" aus, Uwe.
Was nutzt mir eine 1:1-Kopie eines ausgefüllten Sheets?

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste