Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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

Variablen erstellen sich aus Array selbstständig

Variablen erstellen sich aus Array selbstständig
28.09.2015 10:11:10
Sören
Hallo zusammen!
Folgende Idee habe ich und weiß nicht, ob man sie überhaupt verwirklichen kann.
Ich möchte Spaltenbezeichnungen in eine Array einlesen und diese Bezeichnungen dann als Parameter einsetzen, um ihnen die Spaltenzahl zuzuordnen.
Das Makro soll seine Variablen also selber erstellen/dimen können.
Ist dies möglich?
Danke Gruß Sören

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen erstellen sich aus Array selbstständig
28.09.2015 11:05:11
ChrisL
Hi Sören
Etwa so...
Sub t()
Dim iSpalten As Integer
Dim i As Integer
iSpalten = Range("IV1").End(xlToLeft).Column
ReDim ar(iSpalten - 1)
For i = 0 To iSpalten - 1
ar(i) = Cells(1, i + 1)
Next i
End Sub

(Achtung Array zählt ab null)
Zeile 1 wird gelesen, Annahme keine leeren Spalten.
cu
Chris

Variablen erstellen sich aus Array selbstständig
28.09.2015 11:26:27
Sören
Hi Chris
Den ersten Schritt habe ich bereits analog auch zu deinem Beitrag gemacht. Der entscheidende Schritt fehlt jedoch noch.
Die eingelesenen Werte (z.B.: "Bem") sollen nur zur Variablen deklariert werden.
Diesen Variablen weise ich dann die Spalten zu, in welcher der Text sich befindet. Dadurch sollen meine künftigen Makro flexibler sein, wenn ich Spalten hinzufüge. Statt der Spaltenzahl verwende ich dann den Parameter (zB: "BEM") und das Programm erkennt selbstständig in welcher Spalte dieser steht.
Im einfachen Fall würde es so aussehen:

Sub Spalten()
Dim Spaltenzahl As Integer
Dim Bezeichnung() As String
Spaltenzahl = ActiveSheet.Cells(1, 1000).End(xlToLeft).Column
ReDim Preserve Bezeichnung(Spaltenzahl)
For i = 1 To Spaltenzahl
Bezeichnung(i) = Cells(1, i)
Next
'Problematik: Variable automatisch deklariert
>>>>>For i = 1 to Spaltenzahl
>>>>>Dim Bezeichnung(i) as string
>>>>>next
MsgBox ("Fertig")
End Sub

Anzeige
AW: Variablen erstellen sich aus Array selbstständig
28.09.2015 13:00:24
ChrisL
Hi Sören
Ich verstehe die Anforderung/Problem leider nicht ganz.
Warum vergleichst/suchst du die Spaltenüberschrift nicht direkt in der Tabelle?
Nachstehend noch ein kleines Array-Beispiel:
Sub t()
Dim ar(2, 1)
' Ein Test-Array (Zahlen = Spaltenindex)
ar(0, 0) = "BEM"
ar(0, 1) = 1
ar(1, 0) = "BIM"
ar(1, 1) = 3
ar(2, 0) = "BAM"
ar(2, 1) = 2
' Suche
Dim sSuche As String
sSuche = "BIM"
For i = 0 To UBound(ar)
If ar(i, 0) = sSuche Then MsgBox sSuche & " gefunden in Spalte " & ar(i, 1)
Next i
End Sub

cu
Chris

Anzeige
Variablen erstellen sich aus Array selbstständig
28.09.2015 14:58:56
Sören
Hi Chris.
Das hilft mir alles nicht weiter.
Ich habe 280 Spalten, die ich jetzt benannt habe und auf die sich etliche Makros beziehen. Füge ich künftig Spalten ein, geben ich diesen ebenfalls einen Namen und spreche sie mit diesen Namen in den Makros an.
Ich könnte natürlich die Variablen ganz einfach definieren (BEM = 2; Num = 3 usw.) Wenn ich jetzt eine Spalte einfüge, muss ich halt die Parameter anpassen (Bem = 2; NEU = 2; Num = 3)
Ich möchte versuchen, dass das Marko selbstständig erkennt, in welcher Spalte zB "Num" steht.
Die Problematik ist tatsächlich: Kann das Marko selbstständig seine Variablen deklarieren ( 280 Variable)
Userbild
Nochmals Danke.

Anzeige
AW: Variablen erstellen sich aus Array selbstständig
28.09.2015 16:36:53
ChrisL
Hi Sören
Vielleicht stehe ich auf dem Schlauch. Aber was mir nicht in den Kopf will, warum suchst du nicht einfach in den Spaltenüberschriften und machst einen Umweg über ein Array.
Wenn du immer frisch suchst, dann kannst auch beliebig Spalten einfügen.
Sub t()
Dim sSuche As String
sSuche = "BUM"
MsgBox "Ergebnis in Spalte " & SuchMal(sSuche)
End Sub
Private Function SuchMal(sSuche As String) As Integer
SuchMal = Application.Match(sSuche, Rows(1), 0)
End Function
cu
Chris

AW: Variablen erstellen sich aus Array selbstständig
28.09.2015 15:05:34
Rudi
Hallo,
das geht so nicht. Nimm die Spaltennummern in eine Colection auf.
Bsp.:
Sub aa()
Dim i As Long, oCol As New Collection
For i = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
oCol.Add i, Cells(1, i)
Next
MsgBox Cells(5, oCol("Bem"))
End Sub

Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige