Ich muss ein mehrdimensionales Array erstellen, aber ich kenne die Höhe des Arrays nicht. Ich bekomme diesen Wert und speichern ihn in einer Variablen. Leider kann ich beim Deklarieren des Arrays keine Variable verwenden, ich muss Konstanten verwenden. Also dachte ich, ich könnte einfach eine Konstante aus der Variablen deklarieren, aber dann bekomme ich den gleichen Fehler "Constant Expression Required" nur in einer früheren Zeile.Ist es möglich, eine Konstante basierend auf dem Wert einer bereits vorhandenen Variablen in VBA zu deklarieren?
lr = Tables.Cells(Rows.Count, 1).End(xlUp).Row
Const constlr As Integer = lr
Dim TableNamesArr(2 To constlr, 1 To 4) As String
Dim i As Integer, j As Integer
For i = 2 To lr
For j = 1 To 4
TableNamesArr(i, j) = Tables.Cells(i, j).Value
Next j
Next i
Aktuell Zeile 3 ist die Frage - Konst constlr As Integer = lr
aber wenn ich diese Zeile entfernen und alle constlr zu lr ändern, dann ist es Linie 5 - Dim TableNamesArr(2 To lr, 1 To 4) As String
.
Das lr das Problem ist, braucht es eine ganze Zahl oder eine Konstante sein, aber keine Variable hält eine ganze Zahl
Der Code funktioniert gut, wenn ich ändern:
Const constlr As Integer = lr
zu
Const constlr As Integer = 102
Welche Zeile Ihres Codes verursacht einen Fehler? –
Derzeit 3 - Const Constrlr As Integer = lr aber wenn ich diese Zeile entfernen und alle Constrlr zu Ir ändern, dann ist es Zeile 5 - Dim TableNamesArr (2 bis lr, 1 bis 4) als String. Die lr ist das Problem, braucht es eine ganze oder konstant sein, aber nicht um eine Variable für eine ganze Zahl –
Die Antwort auf Dich Haupt (Titel) Frage hält, ist ** Nein, Sie können dies nicht tun ** und der Beweis ist in Ihrem Frage und Ihre Tests (letzte Zeilen). Meine Frage ist - warum denkst du, du musst "lr" als konstant setzen? Denken Sie an konstante Definition - es ist etwas, das Sie nicht ändern, aber Sie möchten es ändern. Es macht nicht Sinn. –