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

Range-Variable nicht eintragen

Range-Variable nicht eintragen
01.05.2021 22:31:41
Oliver
Liebes Forum, ich versuche, Daten aus mehreren Dateien in einer Tabelle zusammenzuführen. Prinzipiell funktioniert das mit dem folgenden Makro (mit Hilfe von Nepumuk) schon gut, allerdings habe ich das Problem, dass in den For-Schleifen jeweils bei Zelle = Zelle.Address (False, False) schon in die jeweilige Zelle ihre eigene Adresse eingetragen wird (also "B7" in Zelle B7 usw.) und damit auch die ausgelesenen Werte überschrieben werden. Ich möchte aber nur den Wert zuweisen, um damit dann über die Function Werte aus der anderen Tabelle auszulesen. Könnt Ihr mir weiterhelfen?

Option Explicit
Public Sub Import()
Dim QPfad As String, QDatei As String, qsh As String, zsh As Worksheet
Dim astrFiles() As String
Dim qrng1 As Range, qrng2 As Range, Zelle As Range
Dim lastR As Long, ialngIndex As Long
QPfad = ThisWorkbook.Path & Application.PathSeparator & "Projekte" & Application.PathSeparator
qsh = "Ressourcenplan"
Set zsh = ThisWorkbook.Sheets("P-Digest")
Set qrng2 = Range("B7:D11")
Set qrng1 = Range("B1")
ActiveSheet.UsedRange.ClearContents
QDatei = Dir$(QPfad & Application.PathSeparator & "*.xlsm")
Do Until QDatei = vbNullString
ReDim Preserve astrFiles(ialngIndex)
astrFiles(ialngIndex) = QDatei
ialngIndex = ialngIndex + 1
QDatei = Dir$
Loop
For ialngIndex = LBound(astrFiles) To UBound(astrFiles)
lastR = ActiveSheet.Range("B" & Application.Rows.Count).End(xlUp).Row
For Each Zelle In qrng1
Zelle = Zelle.Address(False, False)
ActiveSheet.Cells(lastR + 2, 1).Value = _
GetValue(QPfad, astrFiles(ialngIndex), qsh, Zelle)
Next Zelle
For Each Zelle In qrng2
Zelle = Zelle.Address(False, False)
ActiveSheet.Cells(lastR + Zelle.Row - 5, Zelle.Column).Value = _
GetValue(QPfad, astrFiles(ialngIndex), qsh, Zelle)
Next Zelle
Next
End Sub
Private Function GetValue(pfad, datei, blatt, Zelle) As String
Dim arg As String
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(Zelle).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
Vielen Dank im Voraus,
Oliver

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range-Variable nicht eintragen
02.05.2021 12:24:02
Rudi
Hallo,
dann so:

For Each Zelle In qrng1
ActiveSheet.Cells(lastR + 2, 1).Value = _
GetValue(QPfad, astrFiles(ialngIndex), qsh, Zelle.Address(False, False))
Next Zelle
Gruß
Rudi
AW: Range-Variable nicht eintragen
02.05.2021 16:12:31
Oliver
Hallo Rudi, ein Traum, vielen Dank! Hätte ich auch selbst drauf kommen können, aber manchmal sieht man den Wald vor Bäumen nicht..
Schönen Sonntag noch und beste Grüße,
Oliver
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige