Anzeige
Archiv - Navigation
1216to1220
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

Frage zu Find-Befehl VBA

Frage zu Find-Befehl VBA
Beffen
Halli Hallo.
Ich bastle derzeit an der Anpassung eines Codewerkes, das mir Franz hat zukommen lassen. Danke übrigens nochmal dafür!
Es handelt sich bei diesem Schnippsel um die Find-Funktion:
Set Zelle = wksQuelle.Columns(kpad).Find(what:=.Cells(Zeile, k).Value, lookat:=xlWhole, LookIn:=xlValues)
leider ist Zelle immer "nothing", weil er nichts findet. Das liegt wahrscheinlich an dem Syntax, den ich noch nicht ganz kapiere!
Grundsätzlich steht der Suchwert in den beiden Tabellen an unterschiedlicher Stelle. Ich interpretiere denCode so, dass
- wksQuelle.Columns(kpad) die Suchspalte kpad in der entfernten Tabelle darstellt (in dem Beispiel Spalte I=9)
- .Find(what:=.Cells(Zeile, k).Value den Vergleichswert in der aktuellen Tabelle in k-Spalte (k ist in dem Beispiel auch 9 - kann aber variieren - genauso wie kpad) für die Schleifenzeile "findet"
Ich komm irgendwie nicht mehr klar, denn die Anpassung gestaltet sich schwierig...
Sieht jemand durch das Kauderwelsch durch, dass ich da fabriziert habe?
Hier der Code im Zusammenhang. Ist eine Entwurfsfassung - also viel auskommentiert um den Fehler einzuschränken.
Sub holeMasterDaten()
'dateinameseparieren
Dim wbQuelle As Workbook, wksQuelle As Worksheet, Zeile_Q
Dim wbZiel As Workbook, wksZiel As Worksheet, Zeile, Zelle As Range
k = Sheets("system").Range("K3").Value
kpad = Sheets("system").Range("N3").Value
wertungvon = Sheets("system").Range("K8").Value
wertungbis = Sheets("system").Range("K9").Value
Set wbQuelle = ThisWorkbook 'Name ggf. anpassen
Set wksQuelle = wbQuelle.Worksheets("tempcoglopad") 'Name ggf. anpassen
Set wbZiel = ThisWorkbook 'Name ggf. anpassen
Set wksZiel = wbZiel.Worksheets("New LCL") 'Name ggf. anpassen
' Application.ScreenUpdating = False
With wksQuelle
'Letzte Zeile in PAD-Number-Spalte
Zeile_Q = .Cells(.Rows.Count, 4).End(xlUp).Row
'Datenzeilen kopieren
.Range(.Cells(4, 1), .Cells(Zeile_Q, 13)).Copy
End With
With wksZiel
'Werte in Zieltabelle einfügen
.Cells(8, 1).PasteSpecial Paste:=xlPasteValues
Set wksQuelle = wbQuelle.Worksheets("templcl") 'Name ggf. anpassen
'Zeilen in Zieltabelle nachbereiten
For Zeile = 8 To .Cells(.Rows.Count, 9).End(xlUp).Row
'Shop 7  Zeilen - Informationen löschen
'If .Cells(Zeile, k) = 3000012 Then
'Spalten B-C
' .Range(.Cells(Zeile, 1), .Cells(Zeile, 100)).ClearContents
'Spalten E
'.Cells(Zeile, 5).ClearContents
' End If
'Pad-Number in "templcl" suchen
Set Zelle = wksQuelle.Columns(kpad).Find(what:=.Cells(Zeile, k).Value, lookat:=xlWhole,  _
LookIn:=xlValues)
If Zelle Is Nothing Then
'Zeile in Spalten wertungvon bis wertungbis färben und Inhalte löschen
With .Range(.Cells(Zeile, wertungvon), .Cells(Zeile, wertungbis))
.Interior.ColorIndex = 8 'gelb
'.ClearContents
End With
Else
Zeile_Q = Zelle.Row
'Werte aus Spalten F bis I von "LCL alt" nach "LCL neu" kopieren
With wksQuelle
.Range(.Cells(Zeile_Q, wertungvon), .Cells(Zeile_Q, wertungbis)).Copy
End With
With .Range(.Cells(Zeile, wertungvon), .Cells(Zeile, wertungbis))
.PasteSpecial Paste:=xlPasteValues
.Interior.ColorIndex = xlColorIndexNone
End With
End If
Set Zelle = Nothing
Next
Application.CutCopyMode = False
End With
Application.ScreenUpdating = True
End Sub

Danke
Gruß Uwe

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Frage zu Find-Befehl VBA
08.06.2011 15:52:48
Peter
Hallo Uwe,
die Code-Zeile sieht richtig aus.
Kann es sein, dass Du versuchst einen nummerischen Wert zu finden und in der Zelle stehen nur String-Werte oder umgekehrt?
Geh in der VBA-Umgebung mit Debuggen und Einzelschritt durch Dein Makro und markiere bei dem Befehl z. B.
.Cells(Zeile, k).Value und klicke dann im Debuggen-Fenster auf aktuellen Wert anzeigen.
Nur so könntest Du das Problem finden bzw. beheben.
Gruß Peter
Fallbezogenes Einfügen
08.06.2011 16:52:23
Beffen
Hallo Peter. Das gibt mir zumidnest die Gewissheit, dass ich die Zeile richtig interpretiert habe. Danke!
Wenn ich die Formatierung auf Text ändere, dann haut zumindest die Formatierung hin.
Leider die Zuordnung nicht, wie ich gerade feststellen musste.
Zum Verständnis, was ich überhaupt machen soll:
Vielleicht hat jemand einen Codevorschlag:
Ich habe eine Tabelle mit 3Tabellenblättern:
New overview
templcl
tempcoglopad
Ziel ist, "New overview" zu aktualisieren.
in "templcl" ist eine Kopie von "New overview" abgelegt - also die zu aktualisierenden Daten.
"tempcoglopad" ist eine Art Masterdatei in der alle Bauteile und die Reihenfolge des Zusammenbaus stehen.
In "New overview" stehen ebenfalls die Arbeitsschritte, zusätzlich ist eine Bewertung erfasst.
Hoffe soweit klar.
Ich möchte nun ALLE Bauschritte, die in "tempcoglopad" abgedbildet sind in "New Overview" einfügen.
1. Hierbei ändert sich aber die Reihenfolge der Spalten. Wie kann ich diese zuordnen oder BESSER: wie
kann ich das den Anwender zuordnen lassen ohne, dass er programmieren muss? Also Spalte J in "tempcoglopad" ist Spalte Z in "New overview"...
Nun habe ich also alle Bauschritte in "New overview" mit neuer Spaltenreihenfolge eingefügt. Jetzt kommt "templcl" ins Spiel. Dieses Tabellenblatt beinhaltet ja die ursprüngliche Reihenfolge und vor Allem die Bewertung der Arbeitsschritte.
Eine direkte Zuordnung in Form der Spaltennummer ist durch die Variable "k" gegeben, die der Anwender auswählt.
2. Nun soll VBA im Tabellenblat "templcl" in der Spalte, die sich durch "k" definiert den ersten Wert in Zeile 8 schnappen und in "New overview" in der durch "kpad" definierten Spalte diesen Wert suchen. Wird der Wert gefunden, sollen die Bewertung in "templcl" in "New overview" nachgezogen werden. Der Spaltenbereich geht von "wertungvon" bis "wertungbis".
3. Wird der Wert NICHT in "New Overview" gefunden, passiert nichts.
4. Abschliessend sollen die wertungsbereiche (wertungvon - wertungbis) farblich markiert werden, wenn keine wertung eingetragen ist. Diese Arbeitsschritte sind neu in der Übersicht und demzufolge noch nicht bewertet, was der Anwender dann nachholen muss - deswegen die farbliche Kennzeichung.
Ich habe bisher die Datenvorauswahl und den Import in die genannten Tabellenblätter. Mit dem oben angegebem Code kommt leider Gottes Murks heraus. Ich weiss nicht warum!
Ich hoffe jemand hat eine Idee. Wenn nötig, kann ich auch nochmal ne Beispieldatei fertig machen.
Ärgert mich, dass mich die Sache so lange aufhält, denn ich hab den Aufwand unterschätzt!!!
Gruß Beffen
Anzeige
Lade die Beispielmappe mal hoch o.w.T
11.06.2011 13:48:00
Reinhard


AW: leider Dienstag erst
12.06.2011 14:07:21
Beffen
Hallo Reinhard,
leider habe keinen Zugang zu den Daten heute und morgen. Ich melde mich dann Dienstag, so schnell, wie möglich bei Dir!
Danke für deine Mühe!
Gruß Beffen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige