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
Inhaltsverzeichnis

@Franz, Tino: Spaltennamen auslesen

@Franz, Tino: Spaltennamen auslesen
Claudia
Hallo Ihr beiden,
Ihr habt mir sehr geholfen. Im Einsatz ist jetzt das Makro von Dir, Franz.
Wollte mal wissen, ob das auch in die umgekehrte Reihenfolge geht? Sprich: Es werden alle Namen aus dem Blatt rechts in den Reiter "Blattnamen" ab Zeile 20 eingelesen? Nach dem gleichen Muster:
A = Name
B = Spalte z.B. AB
C = Größe der Spalte
Ich habe mich auch schon selbst auf die Suche gemacht. Aber ich habe nur dieses gefunden. Hier werden die Namen aller Blätter ausgelesen.Darüber hinaus ist die Darstellung natürlich nicht so toll, da auch die Tabellennamen mitgeliefert werden. Ist ja klar, wenn man alle Tabellen ausliest. Aber ich möchte halt nur die Tabelle recht daneben.
Vielen lieben Dank!
Liebe Grüße
Claudia
Private Sub alle_Namen_protokollieren()
Dim BenannteBereiche As Name
Sheets("blattnamen").Activate
Range("a20").Select
For Each BenannteBereiche In ActiveWorkbook.Names
ActiveCell.Value = BenannteBereiche.Name
ActiveCell.Offset(0, 1).Value = _
ActiveWorkbook.Names.Item(BenannteBereiche.Name)
ActiveCell.Offset(1, 0).Select
Next
End Sub

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

Betreff
Benutzer
Anzeige
müsste so gehen
23.11.2009 11:54:16
Tino
Hallo,
Private Sub alle_Namen_protokollieren()
Dim BenannteBereiche As Name
Dim oSH As Worksheet
Dim A&
Set oSH = Sheets("Blattnamen")
A = 20
For Each BenannteBereiche In ThisWorkbook.Names
If BenannteBereiche.RefersTo Like "=" & Sheets(oSH.Index + 1).Name & "!*" Then
oSH.Cells(A, 1).Value = BenannteBereiche.Name
With Range(oSH.Cells(A, 1))
oSH.Cells(A, 2).Value = .Address
oSH.Cells(A, 3).Value = .Cells(1, 1).ColumnWidth
End With
A = A + 1
End If
Next
End Sub
Gruß Tino
AW: müsste so gehen
23.11.2009 12:06:33
Claudia
Hallo Tino,
das ging ja fix. Es klappt auch prima.
Bekommst Du es noch hin, dass als Spalte dann z.B. nur F steht. Derzei sieht das
so aus : $F:$F
Ist einfacher, weil ich die Daten ja auch so eingebe.
Vielen Dank!
Liebe Grüße Claudia
Anzeige
geht auch
23.11.2009 12:13:50
Tino
Hallo,
Private Sub alle_Namen_protokollieren()
Dim BenannteBereiche As Name
Dim oSH As Worksheet
Dim A&
Set oSH = Sheets("Blattnamen")
A = 20
For Each BenannteBereiche In ThisWorkbook.Names
If BenannteBereiche.RefersTo Like "=" & Sheets(oSH.Index + 1).Name & "!*" Then
oSH.Cells(A, 1).Value = BenannteBereiche.Name
With Range(oSH.Cells(A, 1))
If .Address(0, 0) = Range(.Address(0, 0)).EntireColumn.Address(0, 0) Then
oSH.Cells(A, 2).Value = Left(.Address(0, 0), InStr(.Address(0, 0), ":") - 1)
Else
oSH.Cells(A, 2).Value = .Address(0, 0)
End If
oSH.Cells(A, 3).Value = .Cells(1, 1).ColumnWidth
End With
A = A + 1
End If
Next
End Sub
Gruß Tino
Anzeige
@Tino: Super, vielen Dank für Deine Hilfe!
23.11.2009 12:14:51
Claudia
@ Tino: Noch eine Änderung
23.11.2009 15:39:49
Claudia
Hallo Tino,
kannst Du das auch so einrichten, dass auch der Spaltenname in Spalte A ohne das Tabellenblatt angezeigt wird. Da steht derzeit z.B. Vorlage!Anrede
Ich möchte aber nur Anrede da stehen haben, weil Vorlage das Blatt ist.
Wäre prima, wenn das geht. Vielen Dank!
Liebe Grüße
Claudia
AW: bei mir stehen da keine Tabellennamen?
23.11.2009 16:27:40
Claudia
Kann es sein, dass Excel das dann macht, wenn man ein Tabellenblatt mit diesen Namen kopiert?
Lege ich in einem neuen Blatt Namen an, dann werden auch nur die Namen ausgelesen (ohne den Namen der Tabelle).
Danke für Deine Hilfe.
Anzeige
AW: bei mir stehen da keine Tabellennamen?
23.11.2009 16:47:48
Tino
Hallo,
hab mal nochetwas getestet,
kann sein das dies Excel macht wenn es mehrere gleiche Namen gibt.
Sub alle_Namen_protokollieren()
 Dim BenannteBereiche As Name
 Dim oSH As Worksheet
 Dim A&
 Dim sName As String
 
 Set oSH = Sheets("Blattnamen")
 
 A = 20
 
 For Each BenannteBereiche In ThisWorkbook.Names
 
  If BenannteBereiche.Parent.Name = Sheets(oSH.Index + 1).Name Then
     
     sName = BenannteBereiche.Name
     
     If InStr(sName, "!") > 0 Then
      sName = Right$(sName, Len(sName) - InStrRev(sName, "!"))
     End If
     
     oSH.Cells(A, 1).Value = sName
     
     With Range(BenannteBereiche.Name)
        If .Address(0, 0) = Range(.Address(0, 0)).EntireColumn.Address(0, 0) Then
         oSH.Cells(A, 2).Value = Left(.Address(0, 0), InStr(.Address(0, 0), ":") - 1)
        Else
         oSH.Cells(A, 2).Value = .Address(0, 0)
        End If
         oSH.Cells(A, 3).Value = .Cells(1, 1).ColumnWidth
     End With
     A = A + 1
  End If
     
 Next
 
 
 End Sub
Gruß Tino
Anzeige
Prima, jetzt klappt es. Danke!
23.11.2009 17:20:42
Claudia
Habe vorsorglich danach auch mal alle Namen gelöscht. Jetzt ist es ja super einfach, die Namen wieder einzubauen.
Danke!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige