Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Namen definieren für bestimmten Bereich

Betrifft: Namen definieren für bestimmten Bereich von: Andre
Geschrieben am: 03.08.2008 19:58:38

Hallo zusammen,
ich habe eine Tabelle in der ich 2 Spalten mit Namen definiert habe (Vorgaenge, Identification). Zwischen den beiden Spalten sind Zeilen (einzelne Vorgänge, siehe Beispieltabelle). Jetzt möchte ich jedem Vorgang einen Namen geben ... unzwar wenn möglich über eine Schleife in VBA ... die echte Tabelle enthält etwa 400 Vorgänge. Gibt es da eine Möglichkeit die Vorgänge zu bennenen ohne immer alles eingeben zu müssen? Das wäre echt genial! Sinn und Zweck der ganzen Sache ist, dass ich aus jedem Vorgang eine Information brauche, die ich später mit einer Formel heraushole.

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

Viele Grüße
Andre

  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Daniel
Geschrieben am: 03.08.2008 20:18:34

Hi

ich halte es nicht für besonders sinnvoll, für jeden Vorgang einen Namen anzulegen, da gibt es sicherlich bessere Methoden, um an die Informationen zu einem Vorgang ranzukommen (z.B. mit dem SVERWEIS oder der Kombination aus INDEX und VERGLEICH.

aber falls du unbedingt ein Makro dazu haben willst:

Public Sub Namen_Für_Vorgänge()
Dim Zelle As Range
For Each Zelle In Range("A2:A" & Range("A1").End(xlDown).Row)
    ActiveWorkbook.Names.Add Name:=Zelle.Offset(, 8).Value, RefersTo:=Zelle.Resize(, 8)
Next
End Sub



falls die Grösse der Namensbereiche noch nicht richtig passt, musst du es selber noch einwenig anpassen.


Gruß, Daniel


  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Ramses
Geschrieben am: 03.08.2008 20:24:04

Hallo

Wenn die Vorgänge eindeutig sind, warum machst du das nicht mit SVERWEIS()

Die Vorgänge in deinem Beispiel entsprechen nicht der Konvention zur Namensvergebung

*********************************

Richtlinien für Namen
Welche Zeichen können verwendet werden?
Das erste Zeichen eines Namens muss ein Buchstabe oder ein Unterstrich sein. Für alle weiteren Zeichen des Namens können Buchstaben, Ziffern, Punkte oder Unterstriche verwendet werden.

Können Zellbezüge als Namen verwendet werden?
Namen dürfen nicht identisch mit einem Zellbezug sein, beispielsweise Z$100 oder R1S1.

Kann ich mehr als ein Wort verwenden?
Ja, jedoch dürfen Namen keine Leerzeichen enthalten. Unterstriche und Punkte können zur Trennung von Wörtern verwendet werden - z. B. Umsatz_Steuer oder Erstes.Quartal.

Wie viele Zeichen können verwendet werden?
Ein Name darf maximal 255 Zeichen umfassen.

Anmerkung
Wenn ein für einen Bereich definierter Name mehr als 253 Zeichen enthält, kann er nicht im Feld Name ausgewählt werden.

Wird bei Namen Groß- und Kleinschreibung unterschieden? Namen können Buchstaben in Groß- und Kleinschreibung enthalten. Microsoft Excel unterscheidet bei Namen nicht zwischen Groß- und Kleinbuchstaben. Wenn Sie beispielsweise den Namen Umsatz erstellt haben und dann in derselben Arbeitsmappe den Namen UMSATZ erstellen, wird der erste Name durch den zweiten ersetzt.

*******************************************

Wie lauten deine Vorgangsnamen sonst, oder ist dies nur ein Beispiel ?

Gruss Rainer


  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Andre
Geschrieben am: 04.08.2008 16:46:04

Hi,
vielen Dank für eure Antworten. Das es erstmals kein Sinn macht, versteh ich. Ich versuche gerade folgendes Problem zu lösen: https://www.herber.de/forum/archiv/996to1000/t997694.htm#997694

Eigentlich war es meine Vision (:-)) das jeder Vorgang einen Bereich darstellt und ich dann in jedem Vorgangsbereich die erste Information von rechts aus auslese. Also die erste Zelle von rechts aus in jedem Bereich, die mit Informationen gefüllt ist.

@ Daniel:
danke für den Code. Das hilft mir sehr weiter. Ich hab ihn jetzt bissle umgeschrieben für meine Benutzung:



Public Sub Namen_Fuer_Vorgaenge()
   Dim Zelle As Range
   Dim iName As String
   
   For Each Zelle In Range("A2:A" & Range("A1").End(xlDown).Row)
      ActiveWorkbook.Names.Add Name:="Vorgang" & Zelle.Value, RefersTo:=Zelle.Resize(, 8)
      
   Next
End Sub





Doch nun hab ich noch eine Frage. Die Spalte "I" hat den Namen "Identification" und ist eben nicht immer Spalte "I" sondern auch mal weiter hinten oder vorne. Gibt es nun die Möglichkeit bei RefersTo:=Zelle.Resize(, 8) festzulegen, dass ich den Bereich nicht um 8 Spalten ausweiten will, sondern eben bis zum Bereich "Identification" minus genau dieser Spalte? Also das die Spalte vor "Identification" noch mit in jedem Vorgangsbereich drin ist?

@ Ramses

Ist nur ne Beispieltabelle - die Vorgänge heißen total anders und entsprechen der Namenskonvention.


Sorry für die teilweise sclechten Erklärungen, ich bin darin ungeübt. Und vielen Dank für eure Hilfe!

Gruß Andre


  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Daniel
Geschrieben am: 04.08.2008 18:52:20

Hi
du kannst mit

=Rows(1).find(what:="Identification", lookin:=xlvalues, lookat:xlwhole).Column

die Spalten-Nr feststellen, in der der "Identification" steht und diesen Wert in der Resize-funktion entsprechend verwenden.

Gruß, Daniel


  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Andre
Geschrieben am: 04.08.2008 21:09:30

Hi Daniel,
dankeschön für deine Hilfe! Das funktioniert super! Welch' ein schönes Gefühl *grins

Gruß

Andre


  

Betrifft: AW: Namen definieren für bestimmten Bereich von: Ramses
Geschrieben am: 04.08.2008 21:26:13

Hallo

Alternativ ohne "Find"

Zelle.Resize(, Range("Identification").Column -1)

Gruss Rainer


 

Beiträge aus den Excel-Beispielen zum Thema "Namen definieren für bestimmten Bereich"