Hallo Senco
mein Problem ist das ich nicjht weiss wie man hier Beispielmappen reinstellt. Wie hast du das mit dem Link gemacht?
Ich sende dir deshalb mal den Makro Code für den du ein Modulblatt Modul1 +2 anlegen musst. Modul 2 enthaelt nur Öffentliche Variable / Namen. Diese Namen musst du auf deine Original Datei Namen und Tabellen Namen abaendern. z.B. aktivierst du in deinem Makro in Export "sheet1" Der Code ist getestet und laeuft mit der Beispieldatei einwandfrei, sofern ich alles nrichtig verstanden haben. Er ist kommentiert, du kannst ihn ggf. selbst korrigieren.
mfg Nobody
'Modul_Public:
'Öffentliche Namen für alle Module
'** hier die Original Datei Namen einsezten
Public Const Mappe1 = "EILER VBA.xlsm"
Public Const Mappe2 = "Kennz_K_20160930_F.csv"
'** hier die Original Tabellen Namen einsezten
Public Const CsvSht = "Kennz_K_20160930_F" 'in "sheets1" umbenennen ???
Public Const EilSht = "Tabelle1" '"sheet 1" ??
'** Anfang Adresse Spalte N in csv Mappe
Public Const NAnf = "N12" '1. Zeile in Spalte N
'Ich gehe davon aus das die 1. Zeile immer N12 ist!
'### im Makro für Tabelle1 steht diese Anweisung:
'ActiveWorkbook.Sheets("sheet1").Activate
'dort wird "sheets1" activiert !!
'wenn mein Makro nicht klappt evtl. das CsvSht in
'"sheet1" umbenennen
'Modul1:
Option Explicit '6.10.2016 Nobody vba Forum
Dim cSuBer As String, clz As Long
Dim rFind As Object, SuNa As String
Dim MP1 As Workbook, MP2 As Workbook
Dim CSht As Worksheet, Sp As Integer
Sub Mappe1_aktualisieren()
Dim dlz As Long, glz As Long
Dim Adr1 As String, r As Long
Dim nAdr As String, z As Long
Set MP1 = Workbooks(Mappe1)
Set MP2 = Workbooks(Mappe2)
Set CSht = MP2.Worksheets(CsvSht)
'LasdZell in csv Spalte N und Such-Bereich
clz = CSht.Range(NAnf).End(xlDown).Row
cSuBer = CSht.Range(NAnf, "N" & clz).Address
With MP1.Worksheets(EilSht)
'LatZell in Mappe1 Spalte D + G
dlz = .Range("D1").End(xlDown).Row
glz = .Range("G1").End(xlDown).Row
'alte Listen in Spalte D+G Löschen
.Range("C2:E" & clz).ClearContents '"D1:E"
.Range("F2:H" & glz).ClearContents '"G1:H"
'Suchname + Ziel Spalte laden (3LFDE)
SuNa = .Range("D1").Value
z = 2 '1. Zeile in D
Sp = 4 '4= Spalte "D"
GoSub such 'Such Programm
'Suchname + Ziel Spalte laden (3L6SW)
SuNa = .Range("G1").Value
z = 2 '1. Zeile in G
Sp = 7 '7= Spalte "G"
GoSub such 'Such Programm
Exit Sub
' ***************************************************
such: 'Such Unterprogramm in Mappe2 csv (GoSub)
Set rFind = CSht.Range(cSuBer).Find(What:=SuNa, LookIn:=xlValues, _
After:=Range(NAnf), LookAt:=xlWhole, MatchCase:=True)
If rFind Is Nothing Then MsgBox SuNa & " Such-Text nicht gefunden"
If Not rFind Is Nothing Then
'1. Such Adresse zum Aussprung notieren
Adr1 = rFind.Address: nAdr = Adr1
'2. Suchlauf nach weiteren Werten (Do Loop)
Do 'Aussprung wenn kein Wert mehr vorhanden
r = rFind.Row 'gefundene Zeile in Spalte N merken
Cells(z, Sp - 1) = r 'gefundene Zeile zur Kontrolle
Cells(z, Sp + 0) = CSht.Cells(r, "D") 'Lieferung aus Spalte D
Cells(z, Sp + 1) = CSht.Cells(r, "K") 'F-Wert aus Spalte K
Set rFind = CSht.Range(cSuBer).FindNext(After:=Range(nAdr))
If rFind Is Nothing Then Exit Do
nAdr = rFind.Address: z = z + 1
Loop While Adr1 <> nAdr
End If
Return
End With
End Sub
.
|