MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 14.03.2019, 10:10   #1
HaWeL
Neuer Benutzer
Neuer Benutzer
Standard Excel 2013 - VBA-Code aus String zusammenführen

Hallo,
ich beschäftige mich zurzeit mit Excel und Namen ...
Ich habe schon intensiv gegoogelt, aber bisher kein Ergebnisse bekommen
Entweder ist aus sehr einfach.. oder es geht nicht...
Vielleicht kann mir hier doch jemand helfen...

Code:

For Each Nam In ActiveWorkbook.Names
    
            For i = 1 To 21

               NamText = "Nam." & .Cells(i, 1)
                 
                .Cells(i, Spalte) = NamText
                '# funktioniert leider nicht weil String mit Ausfürungszeichen?
               
              Spalte = Spalte + 1
            Zeile = 1
            Next i
    Next
Nachstehend weiterer VBA-Code zum besseren Verständnis.

Code:

Sub NamensTest()

With Sheets("GespeicherteNamen")

    '### Tabellenblatt zurücksetzen (falls kein neues angelegt wurde ###
    If SheetDa = True Then
        .Cells.Clear
        .Columns.ColumnWidth = .StandardWidth
        .Rows.AutoFit
    End If
     
    '### Zellen Fett und als Text formatieren ###
    .Range(.Cells(1, 1), .Cells(1, Names.Count + 1)).Font.Bold = True
    .Range(.Cells(2, 1), .Cells(17, Names.Count + 1)).NumberFormat = "@" 'Zelle im Textformat um "=" auszuschalten
    
    '### Namen auslesen Standard ###
    .Cells(1, 1) = "Name"
    .Cells(2, 1) = "Name/RefersTo"
    .Cells(3, 1) = "Name/RefersToLocal"
    .Cells(4, 1) = "Name/RefersToR1C1"
    .Cells(5, 1) = "Name/RefersToR1C1Local"
    
     '### Namen auslesen / wollte wissen was noch geht / Komplett? = unbekannt" ###
    .Cells(6, 1) = "Name/RefersToRange.Address"
    .Cells(7, 1) = "Name/RefersToRange.AddressLocal"
    .Cells(8, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlA1)"
    .Cells(9, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlA1)"
    .Cells(10, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlR1C1)"
    .Cells(11, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlR1C1)"
    .Cells(12, 1) = "Name/RefersToRange.Address(RowAbsolute:=False, ColumnAbsolute:=False)"
    .Cells(13, 1) = "Name/RefersToRange.AddressLocal(RowAbsolute:=False, ColumnAbsolute:=False)"
    .Cells(14, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False)"
    .Cells(15, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlA1, RowAbsolute:=True, ColumnAbsolute:=True)"
    .Cells(16, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlR1C1, RowAbsolute:=False, ColumnAbsolute:=False)"
    .Cells(17, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlR1C1, RowAbsolute:=False, ColumnAbsolute:=False)"
    .Cells(18, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo:=Worksheets(1).Cells(1, 1))"
    .Cells(19, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo:=Worksheets(1).Cells(1, 1))"
    .Cells(20, 1) = "Name/RefersToRange.Address(ReferenceStyle:=xlR1C1, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo:=Worksheets(1).Cells(1, 1))"
    .Cells(21, 1) = "Name/RefersToRange.AddressLocal(ReferenceStyle:=xlR1C1, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo:=Worksheets(1).Cells(1, 1))"

'Jetzt habe ich festgestell das ".Parent.Name" auch noch geht und will es noch einbauen

'Dabei kam die Idee einer Schleife die ich nur noch nicht aufgebe weil ich wissen möchte ob es geht...

Zeile = 1
Spalte = 2

    For Each Nam In ActiveWorkbook.Names
    
            For i = 1 To 21
            
                NamText = "Nam." & .Cells(i, 1)
                 
                .Cells(i, Spalte) = NamText
                '# funktioniert leider nicht weil String mit Ausfürungszeichen?
               
             
            Spalte = Spalte + 1
            
            Next i
    Next

'unsw...
End Sub

Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 10:22   #2
TommyDerWalker
MOF User
MOF User
Standard

Hey,

kannst Du nicht einfach beschreiben was Du genau möchtest ?

Deinen Code interpretieren zu müssen muss doch nicht sein...

Gruß
Thomas

__________________

Windows10 PRO 64Bit MSOffice32/64Bit --2007/2010/2013/2016/2019--
Eifersucht ist die Leidenschaft, die mit Eifer sucht, was Leiden schafft.
If Not CODE Working Then Goto https://www.ms-office-forum.net/forum/
On Error GoTo Hell
TommyDerWalker ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 10:37   #3
derHoepp
MOF User
MOF User
Standard

Hallo,

ich lass mir meine Dateistruktur inklusive der Namen immer einfach ins direktfenster ausgeben:
Code:

Option Explicit

Sub NamenListen()
    Dim nme As Name
    Dim ws As Worksheet
    Dim lo As ListObject
    
    Debug.Print "Names:"
    For Each nme In ThisWorkbook.Names
        Debug.Print vbTab & "Name: " & nme.Name & " - " & nme.RefersTo
    Next
    Debug.Print "Worksheets:"
    For Each ws In ThisWorkbook.Worksheets
        Debug.Print vbTab & "Worksheet: " & ws.Name
        For Each lo In ws.ListObjects
            Debug.Print vbTab & vbTab & " ListO: " & lo.Name
        Next lo
    Next ws
End Sub
Nach dem gleichen Prinzip solltest du auch alle anderen Eigenschaften auslesen können. Aber Achtung! Handelt es sich beim Namen beispielsweise um eine Konstante, oder eine Formel, ist ggf. die .RefersToRange nicht gefüllt und du musst den Fehler abfangen!

Viele Grüße
derHöpp
derHoepp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 10:37   #4
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,
und ich dachte mach es ausführlich ...

.Cells(i, Spalte) = NamText '# funktioniert leider nicht weil String mit Ausfürungszeichen?

Hilft das weiter ..
Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 10:43   #5
derHoepp
MOF User
MOF User
Standard

Zitat: von HaWeL Beitrag anzeigen

.Cells(i, Spalte) = NamText '# funktioniert leider nicht weil String mit Ausfürungszeichen?

Hi,
das ist eine Darstellung, was "nicht funktioniert", nicht von dem, was du erreichen willst. Zwischen den Zeilen habe ich geraten, dass du alle Eigenschaften aller deiner Name-Objekte in eine Tabelle ausgeben willst.

Viele Grüße
derHöpp
derHoepp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 11:32   #6
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

ich versuche es erneut zu beschreiben.

1.) in Sheet "GespeicherteNamen" steht in Zelle A1 "RefersTo"
2.) Im VBA - Modul soll daraus "NamText" zusammengeführt werden.

Gewünschtes Ergebnis für For Each - Schleife:

For Each Nam In ActiveWorkbook.Names

NamText = "Nam." & .Range("A1").value

sodass NamText ".Cells(Zeile + 1, Spalte) = Nam.RefersTo" entspricht.

Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 13:07   #7
derHoepp
MOF User
MOF User
Standard

Moin,

ich habs nicht verstanden. Für mein Gefühl schreibst du immernoch code und keine Anforderung. Versuchs doch mal ohne eine einzige Zeile VBA.

Viele Grüße
derHöpp
derHoepp ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 19:12   #8
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard Oh oh ...

Sorry ... ich bin anscheinend zu doof die richtige Frage zu stellen ...

Hier http://www.*************************421434_0_0_asc.php ist jemand mit ähnlichen gescheitert ... Googlesuche: VBA-Code aus String-Variable ausführen


.Cells(Zeile + 1, Spalte) = Nam.Name

soll durch einen zusammengeführten String mit dem Ergebnis

NamText = "Nam." & .Range("A1").value der als Ergebnis "Nam.Name" ergibt ersetzt werden.

Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 20:37   #9
EarlFred
MOF Guru
MOF Guru
Standard

Code:

Option Explicit

Sub test()
Dim strProperty As String
Dim nName As Name
Dim i As Long

strProperty = Cells(1, 1).Value   'z. B. = RefersTo
i = 2
For Each nName In ThisWorkbook.Names
   Cells(i, 1).Value = "'" & CallByName(nName, strProperty, VbGet)
   i = i + 1
Next nName

End Sub

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 7 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,049% per 19.12.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.03.2019, 22:41   #10
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Herzlichen Dank Fred,
ich wollte schon aufgeben...

Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 16:00   #11
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Fred,
hatte gestern Nacht noch "Name und RefersTo" getestet.. lief ohne Probleme.

Heute musste ich feststellen, das "RefersTo , RefersToLocal, RefersToR1C1, RefersToR1C1Local" funktionieren und das Makro bei "RefersToRange.Address" aussteigt.

Meine intensive Recherche zu "CallByName" hat mich auch nicht weitergebracht...

Gibt es da noch was... wenn nicht auch gut ... ich möchte es einfach nur wissen.

Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 17:36   #12
EarlFred
MOF Guru
MOF Guru
Standard

geht alles, wenngleich mir nicht klar ist, wozu man das braucht:
Code:

Option Explicit

Sub test()
Dim strProperty As String, fVarProperty As Variant, j As Long, objTemp As Object
Dim nName As Name
Dim i As Long

strProperty = Cells(1, 1).Value   'z. B. = RefersTo
fVarProperty = Split(strProperty, ".")
i = 2
For Each nName In ThisWorkbook.Names
   Set objTemp = nName
   For j = LBound(fVarProperty, 1) To UBound(fVarProperty, 1) - 1
      Set objTemp = CallByName(objTemp, fVarProperty(j), VbGet)
   Next j
   Cells(i, 1).Value = "'" & CallByName(objTemp, fVarProperty(UBound(fVarProperty, 1)), VbGet)
   i = i + 1
Next nName

End Sub

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 7 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,049% per 19.12.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 21:24   #13
HaWeL
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Fred,
nochmal Danke für die Lösung...
Ich habe dazu gelernt...
Gruß HaWeL
HaWeL ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.03.2019, 21:35   #14
lupo1
MOF Koryphäe
MOF Koryphäe
Standard

Sollte es wirklich Codeerstellung via Code sein, dann

office-loesung.de/
ftopic229695_0_0_asc.php

(selbst zusammenhängen, da das Forum den Link nicht erlaubt)
lupo1 ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.