Microsoft Excel

Herbers Excel/VBA-Archiv

@Franz, Tino: Spaltennamen auslesen | Herbers Excel-Forum


Betrifft: @Franz, Tino: Spaltennamen auslesen von: Claudia
Geschrieben am: 23.11.2009 11:30:06

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

  

Betrifft: müsste so gehen von: Tino
Geschrieben am: 23.11.2009 11:54:16

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


  

Betrifft: AW: müsste so gehen von: Claudia
Geschrieben am: 23.11.2009 12:06:33

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


  

Betrifft: geht auch von: Tino
Geschrieben am: 23.11.2009 12:13:50

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


  

Betrifft: @Tino: Super, vielen Dank für Deine Hilfe! von: Claudia
Geschrieben am: 23.11.2009 12:14:51




  

Betrifft: @ Tino: Noch eine Änderung von: Claudia
Geschrieben am: 23.11.2009 15:39:49

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


  

Betrifft: bei mir stehen da keine Tabellennamen? von: Tino
Geschrieben am: 23.11.2009 15:59:13

Hallo,

https://www.herber.de/bbs/user/66119.xls

Vorlage!Anrede wäre ja auch unzulässig als Name?

Gruß Tino


  

Betrifft: AW: bei mir stehen da keine Tabellennamen? von: Claudia
Geschrieben am: 23.11.2009 16:27:40

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.


  

Betrifft: AW: bei mir stehen da keine Tabellennamen? von: Tino
Geschrieben am: 23.11.2009 16:47:48

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


  

Betrifft: Prima, jetzt klappt es. Danke! von: Claudia
Geschrieben am: 23.11.2009 17:20:42

Habe vorsorglich danach auch mal alle Namen gelöscht. Jetzt ist es ja super einfach, die Namen wieder einzubauen.

Danke!


Beiträge aus den Excel-Beispielen zum Thema "@Franz, Tino: Spaltennamen auslesen"