Tabellenname aus Zelle automatisch übernehmen?
#1
Hallo,

bin komme im Moment nicht voran.
Und zwar habe ich eine Tabellenseite z.B. Tabelle 1

In dieser Tabelle 1 will ich in eine Zeile z.B. B3, B4, B5 je einen Namen eintragen z.B. Produktion, Kosten, Gewinn.
Diese Name sollen nun automatisch den Reiter "Tabelle 2" in "Produktion" umbenennen.
Tab 3 in Kosten
Tab 4 in Gewinn

Danach sollen die Namen automatisch übernommen werden. Wenn ich in Zelle B3 den Namen von Produktion in Entwicklung ändere,
so sollte auch der Tabellenname automatisch von Produktion in Entwicklung geändert werden.

Kann mir da jemand helfen?
Umgekehrt ist ja natürlich einfacher, jedoch braue ich es so rum.
Top
#2
Moin!
Zitat:In dieser Tabelle 1 will ich in eine Zeile z.B. B3, B4, B5 je einen Namen eintragen
Das ist eine Spalte.  :21:
Geht nur mittels VBA.
Nimm ein Worksheet_Change.
Bedenke, dass es beim Tabellennamen Restriktionen gibt, die Du abfangen musst.
Zitat:Umgekehrt ist ja natürlich einfacher,
Jo mittels Verweis auf Zellen in den Sheets:
=TEIL(ZELLE("Dateiname";A1);FINDEN("]";ZELLE("Dateiname";A1))+1;31)

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,

so hatte ein wenig Urlaub und komme nun auf das Problem zurück.
Erstmals danke für den Tipp!

Habe nun folgendes Probiert:
Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
   If Target.Address = "$A$1" Then
      Name = Range("A1")
   End If
End Sub
Das funktioniert auch super. Jedoch müsste ich aus der Zelle A2 und A3 usw. weitere Tabellennamen erstellen.
Ein weiterer Tipp? Die Namen in den Tabellen stehen IMMER in der ersten Tabelle.
Top
#4
(23.08.2016, 11:02)Wow4ik schrieb: Das funktioniert auch super. Jedoch müsste ich aus der Zelle A2 und A3 usw. weitere Tabellennamen erstellen.
Ein weiterer Tipp? Die Namen in den Tabellen stehen IMMER in der ersten Tabelle.

Es gibt die Funktion "With Worksheet()".

Wenn Du da eine Schleife drumrum setzt, geht es:

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim i As Integer
   For i = 1 To Worksheets.Count
      With Sheets("Tabelle" & i)
         If Target.Address = "$A$1" Then
            .Name = Range("A" & i)
         End If
      End With
   Next i
End Sub

Evtl. sollte der Bereich der Target-Adresse noch auf den gesamten belegten Namensbereich ausgeweitet werden.
Top
#5
Bekomme da leider eine Fehlermeldung vom Compiler:
Fehler beim Kompilieren:
Deklaration der Prozedur entspricht nicht der Beschreibung eines Ergebnisses oder einer Prozedur mit demselben Namen


???
Sorry, bin VBA-Neuling
Top
#6
Hi,

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'bin komme im Moment nicht voran.
'Und zwar habe ich eine Tabellenseite z.B. Tabelle 1
'
'In dieser Tabelle 1 will ich in eine Zeile z.B. B3, B4, B5 je einen Namen eintragen z.B. Produktion, Kosten, Gewinn.
'Diese Name sollen nun automatisch den Reiter "Tabelle 2" in "Produktion" umbenennen.
'Tab 3 in Kosten
'Tab 4 in Gewinn
'
'Danach sollen die Namen automatisch übernommen werden. Wenn ich in Zelle B3 den Namen von Produktion in Entwicklung ändere,
'so sollte auch der Tabellenname automatisch von Produktion in Entwicklung geändert werden.
Dim rng_R As Range
Set rng_R = Range("B3:B5")
If Not Intersect(Target, rng_R) Is Nothing Then
    For Each Target In Intersect(Target, rng_R)
        On Error Resume Next
        Sheets(Target.Row - 1).Name = Target
        If Err.Number <> 0 Then MsgBox Target.Value & " ist kein gültiger Name oder Blatt ist schon vorhanden"
        Err.Number = 0
    Next
End If
End Sub

.xlsm   Tabellen_benennen.xlsm (Größe: 19,02 KB / Downloads: 29)
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#7
Vielen Dank!!!

Es geht schon in die richtige Richtung. Wenn ich in B3 etwas eingebe benennt er Tabelle 2 in diesen Text um(sollte jedoch bereits ab Tabelle 1 beginnen und nicht erst bei Tabelle 2, Wert von B4 wird in Tabelle 3 übernommen. Wenn ich jedoch etwas in B5 schreibe kommt die Fehlermeldung mit der MsgBox :  

If Err.Number <> 0 Then MsgBox Target.Value & " ist kein gültiger Name oder Blatt ist schon vorhanden"
Top
#8
Hi,

entspricht aber jetzt nicht deiner ersten Angabe :)

Zitat:'In dieser Tabelle 1 will ich in eine Zeile z.B. B3, B4, B5 je einen Namen eintragen z.B. Produktion, Kosten, Gewinn.

'Diese Name sollen nun automatisch den Reiter "Tabelle 2" in "Produktion" umbenennen.

dann halt -2 ;)

Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng_R As Range, str_Mes As String
Set rng_R = Range("B3:B5")
If Not Intersect(Target, rng_R) Is Nothing Then
    For Each Target In Intersect(Target, rng_R)
        On Error Resume Next
        Sheets(Target.Row - 2).Name = Target
        If Err.Number <> 0 Then
             str_Mes = IIf(Target.Value = "", "'Zelle hat keine Bezeichnung'", Target.Value)
            MsgBox "Tabelle" & Target.Row - 2 & " " & str_Mes & " ist kein gültiger Name oder Blatt ist schon vorhanden"
            GoTo errExit
        End If
    Next
End If
errExit:
End Sub
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • Wow4ik
Top
#9
Hi,

(23.08.2016, 14:45)Wow4ik schrieb: Bekomme da leider eine Fehlermeldung vom Compiler:
Fehler beim Kompilieren:
Deklaration der Prozedur entspricht nicht der Beschreibung eines Ergebnisses oder einer Prozedur mit demselben Namen

ich hatte gestern das Makro nochmal geändert und die Fehler eliminiert. Wenn der Fehler immer noch auftritt, dann hast Du schon ein Worksheet_Change-Ereignis in Deinem File.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Wow4ik
Top
#10
Hey,

danke erst einmal. Es funktioniert bedingt. Sicher funktioniert es super, nur bei mir nicht so ganz wie ich es will.

Die Zellen sind in der Tabelle "Info" abgelegt, diese ist als Tabelle 18 gekennzeichnet(wurde hin und her verschoben).
Es betrifft die Zellen F20-F35.
Wenn ich mir den Code hinzüfüge, in Tabelle 18 --> Tabelle "Info" und den Code abändere in F20-F35 statt B3-B5(wobei F25 keine Daten beinhaltet), so übernimmt er mir die Daten auch automatisch, jedoch nur für die 1 und 2 Zelle, bei den restlichen bekomme ich den Fehlercode:


ist kein gültiger Name oder Blatt ist schon vorhanden

Kann es damit zusammenhängen, das die Tabellen nicht in Reihe sind. Als erstes kommt z.B. Tabelle 18, dann 2, 6,9,22 usw???
Kann ich diese nachträglich umbennen?

Ach ja korrigiere meine Aussage. Die Infos sollen doch auch der erste Tabelle(18) entnommen werden, jedoch erst in die 2. überschrieben werden.
Top


Gehe zu:


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