AW: Verknüpfung zu einer anderen Arbeitsmappe
07.02.2007 00:11:30
fcs
Hallo Toastie,
nachfolgend zwei ungetestete Gerüste, von denen du eines in dein Makro einbauen kannst. Da die eigentlich schnellere Find-Methode bei Suche nach Datums-Inhalten gelegentlich Schwierigkeiten macht bzw. entsprechende Einstellungen erfordert, habe ich hier auch eine Variante mit Suche als Wertevergleich Zelle für Zelle gelistet.
Gruss
Franz
Sub TestVariante() ' mit Wertevergleich Zelle für Zelle
Dim wbThis As Workbook, wbQuelle As Workbook
Dim wksZiel As Worksheet, wksQuelle As Worksheet
Dim Suchen As Variant, gefunden As Boolean
Dim j As Integer, i As Integer, Spaltenende As Integer
Set wbThis = ThisWorkbook 'Dies ist Mappe1.xls
Set wksZiel = wbThis.Worksheets(1)
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(FileName:="D:\Mappe2.xls", ReadOnly:=True) 'zu durchsuchende Arbeitsmappe
For i = 2 To Spaltenende
Suchen = wksZiel.Cells(1, i)
gefunden = False
For j = 1 To 4
Set wksQuelle = wbQuelle.Worksheets(j)
For Each Zelle In wksQuelle.UsedRange
If Zelle.Value = Suchen Then
wksZiel.Cells(10, i).Value = Zelle.Offset(1, 0).Value
gefunden = True
Exit For
End If
Next
If gefunden = True Then Exit For
Next
If gefunden = False Then
MsgBox Suchen & " wurde in den 4 Tabellen nicht gefunden"
End If
Next i
wbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End Sub
Sub Test() ' mit der Find-Methode
Dim wbThis As Workbook, wbQuelle As Workbook
Dim wksZiel As Worksheet, wksQuelle As Worksheet
Dim Suchen As Variant
Dim j As Integer, i As Integer, Spaltenende As Integer
Set wbThis = ThisWorkbook 'Dies ist Mappe1.xls
Set wksZiel = wbThis.Worksheets(1)
Application.ScreenUpdating = False
Set wbQuelle = Workbooks.Open(FileName:="D:\Mappe2.xls", ReadOnly:=True) 'zu durchsuchende Arbeitsmappe
For i = 2 To Spaltenende
Suchen = wksZiel.Cells(1, i)
Set Zelle = Nothing
For j = 1 To 4
Set wksQuelle = wbQuelle.Worksheets(j)
Set Zelle = wksQuelle.UsedRange.Find(What:=Suchen, LookIn:=xlFormulas, lookat:=xlWhole)
If Not Zelle Is Nothing Then
wksZiel.Cells(10, i).Value = Zelle.Offset(1, 0).Value
Exit For
End If
Next
If Zelle Is Nothing Then
MsgBox Suchen & " wurde in den 4 Tabellen nicht gefunden"
End If
Next i
wbQuelle.Close savechanges:=False
Application.ScreenUpdating = True
End Sub