Hallo Christian,
ich erkenne aus deinem Makro nicht sofort, was du machen willst. Deshalb nur einige Hinweise zum Ansprechen von Zellen in anderen Arbeitsmappen. Programme mögen auch anders laufen, aber hiermit habe ich immer das erwartete Ergebnis erhalten:
1. Als Argument von Workbooks darf nur der Dateiname ohne Pfad stehen, also UrsprungsmappeName = ThisWorkbook.Name
2. Die ausgewählte Tabelle solltest du mit dem Namen, der auf dem Tabellenblattreiter steht, ansprechen, also: Workbooks(UrsprungsmappeName).Sheets("Tabelle3")
3. Workbooks(UrsprungsmappeName).Sheets("Tabelle3").UsedRange.Rows.Count) liefert eine Zahl, für die Operation "H1:H" & ... wird aber ein String benötigt, also Cstr(Workbooks(UrsprungsmappeName).Sheets("Tabelle3").UsedRange.Rows.Count))
4. Hinter After der Findmethode steht kein Zellname, sondern irgendein anderer Verweis auf die Zelle. Probiere mal das Beispiel aus der VBA-Hilfe z.B. zur Range.FindPrevious-Methode aus, um Ideen zu erhalten, was du ändernd musst. Wenn du ohnehin hinter der ActiveCell beginnen willst, kannst du es weglassen.
Ich hoffe, dir geholfen zu haben
Holger
Christian schrieb am 27.10.2008 10:26:55:
Hallo zusammen,
bin noch Anfänger in VBA (Excel 2003). Bisher bin ich immer gut klargekommen, aber jetzt treibt mich ein Problem in den Wahnsinn. Kann mir jemand bitte einen Tipp geben?
Das Ziel: Ich versuche, aus einer Arbeitsmappe mittels Makro eine andere Arbeitsmappe zu öffnen, und anschließend zwischen beiden Arbeitsmappen Informationen auszutauschen. Ich muss also sowohl Zellen aus Tabellen aus der alten Mappe wie auch in der neuen Mappe ansprechen.
Mein Problem: Ich kann scheinbar die beiden Mappen nicht richtig ansprechen!
Ich habe es mit activeworkbook und thisworkbook probiert, und mit workbooks(Name), ohne Erfolg.
Einziges Ergebnis: Laufzeitfehler 438: Objekt unterstützt Eigenschaft oder Methode nicht.
Mein letzter Versuch war mit FullName, dann bekomme ich aber Laufzeitfehler 9 (Index).
Variablenumdefinition in Variant hat auch nichts gebracht...
Zum Code (mein letzter Versuch):
Sub Vorschlagslisteerzeugen()
Dim Ursprungsmappe, NeueMappe As Workbook
Dim Zelle As Range
Dim intCount1 As Integer
Dim sZelle As Single
Dim Auftragsnummer As Variant
Dim UrsprungsmappeName, NeueMappeName As Variant
Static ingAufrufe As Long
Set Ursprungsmappe = ThisWorkbook
UrsprungsmappeName = ThisWorkbook.FullName
Auftragsnummer = Tabelle1.Cells(7, 3).Value
Application.SheetsInNewWorkbook = 1
Workbooks.Add
With ActiveSheet
.Cells(1, 1).Value = "Auftragsnr."
.Cells(1, 2).Value = "Vorschlag"
.Range("A1:B1").Font.Bold = True
End With
Set NeueMappe = ActiveWorkbook
NeueMappeName = NeueMappe.FullName
intCount1 = 2
Set Zelle = Workbooks(UrsprungsmappeName).Tabelle3.Range("H1:H" & Workbooks(UrsprungsmappeName).Tabelle3.UsedRange.Rows.Count).Find(Auftragsnummer, after:=ActiveCell, LookIn:=xlValues, lookat:=xlWhole)
Zelle.Activate
If Not Zelle Is Nothing Then
sZelle = Zelle.Address
Do
Zelle.Activate
ActiveSheet.Cells(intCount1, 2).Value = Workbooks(UrsprungsmappeName).Tabelle3.Range("K" & ThisWorkbook.Tabelle3.Range(Zelle.Address).Row).Value
intCount1 = intCount1 + 1
Ursprungsmappe.Tabelle3.Zelle.Activate
Set Zelle = Workbooks(UrsprungsmappeName).Tabelle3.Range("H1:H" & Workbooks(UrsprungsmappeName).Tabelle3.UsedRange.Rows.Count).FindNext(after:=ActiveCell)
On Error Resume Next
If Zelle.Address = sZelle Then
Exit Sub
End If
Loop
End If
ingAufrufe = ingAufrufe + 1
End Sub
Hilfe, bitte! Der Wahnsinn kommt immer näher!
|