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

Array-Range Problem

Array-Range Problem
08.04.2019 16:06:26
Benni
Hallo zusammen,
ich habe folgenden Codeausschnitt, der super funktioniert. Die einzige Problemstelle ist, dass es nicht immer nur 3 Spalten im quell_ws gibt. Daher muss ich die Variable col_nr(2) eigentlich ändern zu col_nr(quell_lastcol - 1). Excel sagt dann jedoch, es ist ein konstanter Ausdruck erforderlich.
Wie kann ich das trotzdem variabel halten?
Jemand eine Lösung für mich?
Danke im Voraus!
Gruß
Benjamin
Public Sub Spaltennummerierung()
'Worksheets Deklaration
Dim quell_ws As Worksheet, ziel_ws As Worksheet
Set quell_ws = ThisWorkbook.Worksheets("A")
Set ziel_ws = ThisWorkbook.Worksheets("B")
'Variablen Deklaration
Dim quell_row As Long, quell_col As Long, quell_lastrow As Long, quell_lastcol As Long,  _
ziel_row As Long, ziel_col As Long, ziel_lastrow As Long, ziel_lastcol As Long
quell_lastcol = quell_ws.Cells(1, Columns.Count).End(xlToLeft).Column
ziel_lastcol = ziel_ws.Cells(10, Columns.Count).End(xlToLeft).Column
Dim col_nr(2) As Integer
For quell_col = 1 To quell_lastcol
col_nr(quell_col - 1) = 0
For ziel_col = 1 To ziel_lastcol
Select Case LCase(ziel_ws.Cells(10, ziel_col))
Case LCase(quell_ws.Cells(1, quell_col)):
col_nr(quell_col - 1) = ziel_col
Exit For
End Select
Next ziel_col
If col_nr(quell_col - 1) = 0 Then
col_nr(quell_col - 1) = ziel_lastcol + 1
ziel_ws.Cells(10, col_nr(quell_col - 1)) = quell_ws.Cells(1, quell_col)
ziel_ws.Cells(10, col_nr(quell_col - 1)).Interior.ColorIndex = 6
ziel_lastcol = ziel_lastcol + 1
End If
Next quell_col
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Array-Range Problem
08.04.2019 16:13:13
PeterK
Hallo
Da Du die Information in col_nr() nicht weiter verwendest, brauchst Du auch kein Array, es reicht "Dim col_nr as integer"
AW: Array-Range Problem
08.04.2019 16:21:21
Benni
Hallo Peter,
ich brauche je Spalte in quell_ws die entsprechende Spaltennummer im ziel_ws im weiteren Code-Verlauf. Die Weiterverwendung habe ich jetzt nur der Übersicht wegen ausgelassen, da es in einem größeren Zusammenhang danach noch weitergeht. Also ich muss je Spalte die Information ablegen und kann nicht col_nr überschreiben.
Verstehst du, was ich meine oder bin ich gerade viel zu kompliziert unterwegs damit?
Wie gesagt, es klappt im Gesamtzusammenhang perfekt, wenn ich da eine Zahl einsetze, es wäre aber durchaus schön, wenn das automatisch passiert, da sich die Spaltenanzahl immer mal verändert.
Anzeige
AW: Array-Range Problem
08.04.2019 16:44:48
PeterK
Hallo
Dann musst Du REDIM verwenden.
Dim col_nr() as integer
.
.
.
ReDim Preserve col_nr(quell_lastcol - 1)
AW: Array-Range Problem
08.04.2019 16:43:57
Benni
Okay, das Problem hat sich erledigt!
Lösung war: einfach mit ReDim die Variable deklarieren und somit:
ReDim col_nr(quell_lastcol - 1) as Integer
Klappt nun super, trotzdem Danke allen, die sichs durchgelesen haben!
AW: Array-Range Problem
08.04.2019 16:47:06
Daniel
Hi
ReDim col_nr(quell_lastcol - 1)
ReDim ist der Befehl für eine Dimensionierung mit berechneter Elementanzahl
mit ReDim kann man auch die Elementanzahl nachträglich ändern.
wenn du ReDim verendest, ist eine Deklaration mit Dim nicht mehr erforderlich.
solltest du jedoch die Variable schon mal vorab deklarieren wollen, weil du ein Fan davon bist, dass alle verwendeten Variablen im Programmkopf aufgelistet werden, dann lass die Elementanzahl offen:

Public Sub xxx()
Dim X() as Long
Dim a as Long
a = ...
Redim X(a)
Gruß Daniel
Anzeige
AW: Array-Range Problem
08.04.2019 16:49:27
Benni
Danke, insb. für den Zusatz mit der Deklaration!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige