So sieht es grade aus:
Mein Problem, wie bekomme ich den Namen der Arbeitsmappe, der Zelle und des Tabellenblattes in mein Sub. (Die Zelle muss auch noch ausgelesen werden im Userform)
Dim rngCell() As Range
Dim strWorkbook() As String
Dim strWorksheet() As String
Dim Arbeitsmappe1, Arbeitsmappe2 As String
Dim a, b, Zeile1, Zeile2, Zeile2safe, Letztezeile1, Letztezeile2 As Integer
Dim Suchwert, Spalte1, Spalte2 As String
Private Sub cmdOK_Click()
Dim bk As Workbook
Dim sh As Worksheet
Dim iCnt As Integer
Dim ch As Range
ReDim rngCell(Application.Workbooks.Count)
ReDim strWorkbook(Application.Workbooks.Count)
ReDim strWorksheet(Application.Workbooks.Count)
For Each bk In Application.Workbooks
iCnt = iCnt + 1
strWorkbook(iCnt) = bk.Name
Set sh = bk.ActiveSheet
strWorksheet(iCnt) = sh.Name
' ToDo: Aktive Zelle in Tabelle sh ermitteln
rngCell(iCnt) = rng.Name
rngCell = rng.Name
If bk.Name <> ActiveWorkbook.Name Then
Debug.Print bk.Name
End If
Next
Arbeitsmappe1 = strWorkbook(iCnt)
Call Suchen_in_zwei_Dateienv2
Unload Me
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim rng As Range
Dim bk As Workbook
Set bk = ActiveWorkbook
Set rng = Application.ActiveCell
Me.lblZelle.Caption = "[" & bk.Name & "]" & rng.Worksheet.Name & "!" & rng.Address
' [Mappe1]Tabelle1!$B$3
End Sub
Private Sub Suchen_in_zwei_Dateienv2()
'Dieses Makro dient zum suchen in den spalten A und B des Tabellenblattes 1
'Dim a, b, Zeile1, Zeile2, Zeile2safe, Letztezeile1, Letztezeile2 As Integer
'Dim Suchwert, Spalte1, Spalte2 As String
'Dim Arbeitsmappe1, Arbwitsmappe2 As String
Application.ScreenUpdating = False
'Variablen Initialisieren
a = 1
b = 1
Suchwert = "Platzhalter"
'
'Startbereich abfragen und Abbruch abfangen
'Arbeitsmappe1 = InputBox("Bitte Arbeitsmappe für Eingabebereich angeben")
'If StrPtr(Arbeitsmappe1) = 0 Then Exit Sub
'
'Spalte1 = InputBox("Bitte Spalte für Eingabebereich angeben")
'If StrPtr(Spalte1) = 0 Then Exit Sub
'
'Zeile1 = InputBox("Bitte erste Zeile für Eingabebereich angeben")
'If StrPtr(Zeile1) = 0 Then Exit Sub
'Zeile1 = CInt(Zeile1)
'
'Arbeitsmappe2 = InputBox("Bitte Arbeitsmappe für Suchbereich angeben")
'If StrPtr(Arbeitsmappe2) = 0 Then Exit Sub
'
'Spalte2 = InputBox("Bitte Spalte für Suchbereich angeben")
'If StrPtr(Spalte2) = 0 Then Exit Sub
'
'Zeile2safe = InputBox("Bitte erste Zeile für Suchbereich angeben")
'If StrPtr(Zeile2safe) = 0 Then Exit Sub
'Zeile2safe = CInt(Zeile2safe)
'
'Letzte Zeile mit Werten ermitteln
Windows(Arbeitsmappe1).Activate
Letztezeile1 = ActiveSheet.Cells(Rows.Count, Spalte1).End(xlUp).Row
Windows(Arbeitsmappe2).Activate
Letztezeile2 = ActiveSheet.Cells(Rows.Count, Spalte2).End(xlUp).Row
'MsgBox Letztezeile1 & " " & Letztezeile2
'
' Schleifenzähler a auf ersten Wert setzen
a = Zeile1
'Schleife für Eingabefeld bis zum letzten Wert
Do While a > Letztezeile1 = False
'Suchwert eintragen
Windows(Arbeitsmappe1).Activate
Suchwert = Range(Spalte1 & Zeile1).Value
'
'Vor neuanlauf Schleife Suchbereich Zähler Rücksetzen Und Startzeile Suchbereich sichern
b = Zeile2safe
Zeile2 = Zeile2safe
Do While b > Letztezeile2 = False
Windows(Arbeitsmappe2).Activate
'Bei Übereinstimmung rot einfärben
If Suchwert = Range(Spalte2 & Zeile2).Value Then
Range(Spalte2 & Zeile2).Interior.Color = vbRed
End If
'Zähler b inkrementieren
Zeile2 = Zeile2 + 1
b = b + 1
Loop
'Zähler a inkrementieren
Zeile1 = Zeile1 + 1
a = a + 1
Loop
End Sub
|