Microsoft Excel

Herbers Excel/VBA-Archiv

Array anlegen und Wert auslesen

Betrifft: Array anlegen und Wert auslesen von: Michael
Geschrieben am: 27.08.2020 14:56:45

Hallo Zusammen,
wie kann ich einen Zellbereich als Array anlegen und dann auf einzelne Zellen des Arrays in VBA zugreifen?
Versuche wie:

Public Werte() As Long

Sub test()
Werte() = Tabelle1.Range("M12:M17").Value
Tabelle1.Range("M26") = Werte(0, 0)
End Sub
scheitern einfach kläglich.
Geht das überhaubt?
Vielen Dank für Eure Unterstützung
Michael

Betrifft: AW: Array anlegen und Wert auslesen
von: peterk
Geschrieben am: 27.08.2020 15:12:52

Hallo

Sub Test()

    Dim myArr As Variant
    
    myArr = Range("A1:A12")

    Tabelle1.Range("M26") = myArr(2, 1)  ' 2.Zeile, 1. Spalte

    
End Sub




Betrifft: noch eine Frage
von: Michael
Geschrieben am: 27.08.2020 15:47:45

Hallo Peter,
funktioniert wie gewünscht!
Ist es möglich, die beiden Zeilen global (für alle Module) zu definieren?:
Dim myARR As Variant
myARR = Tabelle1.Range("A1:A12")

Dann könnte ich mit myARR(nn n) in allen Modulen auf die Werte zugreifen.
Vielen Dank und Gruß
Michael

Betrifft: AW: noch eine Frage
von: peterk
Geschrieben am: 27.08.2020 15:56:20

Hallo

Option Explicit

Public myArr As Variant

Sub Init()

   myArr = Tabelle1.Range("A1:A12")

End Sub

Sub Test()

    Tabelle1.Range("M26") = myArr(2, 1)  ' 2.Zeile, 1. Spalte

End Sub




Betrifft: Fehlermeldung
von: Michael
Geschrieben am: 27.08.2020 16:07:49

Hallo,
leider kommt die Fehlermeldung:
Laufzeitfehler 13
Typen unverträglich
Ich habe den Code zu 100% übernommen.
Gruß
Michael

Betrifft: AW: Fehlermeldung
von: Gerd L
Geschrieben am: 27.08.2020 16:13:45

Moin Michael!
Public myArr As Variant

Sub Init()

   myArr = Tabelle1.Range("A1:A12")

End Sub

Sub Test()
    Call Init
    Tabelle1.Range("M26") = myArr(2, 1)  ' 2.Zeile, 1. Spalte

End Sub
Die Prozedur Init muss vor der Prozedur Test laufen, damit myArr Werte hat.

Gruß Gerd

Betrifft: Danke Gerd! owT
von: Michael
Geschrieben am: 27.08.2020 16:26:10



Betrifft: AW: Array anlegen und Wert auslesen
von: Rudi Maintaire
Geschrieben am: 27.08.2020 15:30:20

Hallo,
1. als Variant
2. Arrays aus Zellbereichen haben als kleinsten Dimension arr(1,1)

Dim werte
Sub test()
werte = Tabelle1.Range("M12:M17")
Tabelle1.Range("M26") = werte(1, 1)
End Sub


Beiträge aus dem Excel-Forum zum Thema "Array anlegen und Wert auslesen"