Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1476to1480
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

variable geht verloren innerhalb des loops

variable geht verloren innerhalb des loops
17.02.2016 15:53:57
Florian
Hallo,
ich brauche Hilfe bitte!
Im Folgenden Code verliert cl seinen Wert und die Schleife kann nicht fortgesetzt werden.
Set ws = Worksheets("Gattungen")
Set oRange = Range("A3:A750")
SearchString = "C"
With oRange
Set cl = .Find(What:=SearchString, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlPrevious)
If Not cl Is Nothing Then
clAddress = cl.Address
Do
cl.Offset(0, 2).Select
WKN = ActiveCell
Workbooks(Makler2).Worksheets("Ergebnis").Activate
Set bereichs = Sheets("Ergebnis").Range("B3:B750")
Set zelles = bereichs.Find(What:=WKN, LookAt:=xlWhole, LookIn:=xlValues)
If zelles Is Nothing Then
Workbooks(Datentool).Worksheets("Gattungen").Activate
Range(Cells(lngr + 1, 1), Cells(700, 1)).Select
GoTo x4
Else
zelles.Select
lngr1 = ActiveCell.Row
lngc1 = ActiveCell.Column
End If
Summe = Cells(lngr1, 3)
Workbooks(Ergebnis).Worksheets("Gruppe C").Activate
If wochentag = "Sonntag" Then
Set bereichs = Sheets("MDax").Range("A1:KH1")
Set zelles = bereichs.Find(What:=Vortag2, LookAt:=xlWhole, LookIn:=xlValues)
zelles.Select
lngcV = ActiveCell.Column
Else
Set bereichs = Sheets("Gruppe C").Range("A1:KH1")
Set zelles = bereichs.Find(What:=Vortag, LookAt:=xlWhole, LookIn:=xlValues)
zelles.Select
lngcV = ActiveCell.Column
End If
Set bereichs = Sheets("Gruppe C").Range("B4:B155")
Set zelles = bereichs.Find(What:=WKN, LookAt:=xlWhole, LookIn:=xlValues)
zelles.Select
lngrV = ActiveCell.Row
Cells(lngrV, lngcV).Select
ActiveCell = Summe
Workbooks(Datentool).Worksheets("Gattungen").Activate
x4:
Set cl = .FindNext(cl)
Loop While Not cl Is Nothing And cl.Address  clAddress
End If
End With

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
bitte Beispielmappe und Erklärung
17.02.2016 16:17:53
ChrisL
Hi Florian
Da wäre eine Beispielmappe mit guter Beschreibung sicher sinnvoll.
Ich finde es positiv, dass du selber versucht hast einen Code aufzubauen. Leider ist das Ergebnis ein kleineres Chaos und ergibt keinen Sinn (z.B. wird der Wochentag nie = Sonntag sein). Einfach so verliert eine Variable auch nicht den Wert, aber nachvollziehen kann ich es so nicht.
cu
Chris

Erklärung
17.02.2016 16:33:34
Florian
Ok ich probiere es mal zu erklären.
Ich habe 3 Excel Dateien:
Datei 1 (Datentool) beinhaltet Gruppen über ein Buchstabe gekennzeichnet und dazugehörige Gattungen
Datei 2 (Ergebnis) zieht aus einem System Daten mit Gattung und Ergebnis
Datei 3 (Gruppe C) listet diese Gattungen mit dazugehörigem Ergebnis auf
Ich brauche diese 3 Dateien getrennt und möchte sie nicht vereinen was da ganze aufwendiger macht.
D.h. Datei 2 wird erstellt und über Datei 1 werden nach Gruppe die Gattungen mit Ergebnis in Datei 2 herausgesucht. Anschließend soll die gefundene Gattung mit Ergebnis in Datei 3 übertragen werden.
Dieser Vorgang soll so lange laufen bis in Datei 1 alle C gefunden wurden.
Ich hoffe das war verständlich.

Anzeige
AW: Erklärung
17.02.2016 16:41:55
Florian
Und zu dem Sonntag.
Das gesamte Makro wird täglich ausgeführt an Arbeitstagen und um es zu automatisieren nehme ich das aktuelle Datum und ziehe einen Tag ab, da immer Daten vom Vortag verarbeitet werden.
Wenn ich am Montag dann die Daten verarbeite muss ich ja in den ganzen Tabellen den vorherigen Freitag benutzen, deswegen der Umweg mit dem Sonntag.

AW: Erklärung
17.02.2016 17:13:55
Luschi
Hallo Florian,
Du mußt die Activate- & Select-Befehlen aus dem Code schmeißen. Dafür brauchst Du je 3 Objektvariablen für die 3 Arbeitsmappen und 3 Tabellen in der Art:
Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
Dim ws1 As Worksheet, ws1 As Worksheet, ws1 As Worksheet
'Mappe die den Vba-Code enthält
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("....")
Set wb2 = Workbooks(Ergebnis)
Set ws1 = wb1.Worksheets("....")
Set wb3 = Workbooks("Gruppe C")
Set ws1 = wb1.Worksheets("....")
hier mal 1 Beispiel, in dem Suchwerte aus 'Tabelle2' in 'Tabelle1' eingetragen werden:
https://www.herber.de/bbs/user/103642.xlsm
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Erklärung
18.02.2016 09:29:22
Florian
Hey Luschi,
danke! Das werde ich mit einbauen! Deine Mappe schaue ich mir gleich mal an!

AW: Erklärung
18.02.2016 10:08:36
Florian
Den Fehler hat niemand gefunden?

AW: Erklärung
18.02.2016 10:44:46
ChrisL
Hi Florian
Problem ist eher, dass die Beispielmappe niemand gefunden hat...
cu
Chris

AW: Erklärung
18.02.2016 12:24:09
Daniel
HI
was muss man tun, um den Fehler nachvollziehen zu können?
die Beispieldatei enthält kein Makro, warum?
Gruß Daniel

AW: Erklärung
18.02.2016 12:57:28
ChrisL
Hiermit bin ich dann raus...
https://www.herber.de/bbs/user/103678.xlsm
Sub Mach()
Dim WB1 As Workbook, WB2 As Workbook, WB3 As Workbook
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim iZeile As Long, letzteZeile As Long
Set WB1 = ThisWorkbook ' anpassen
Set WB2 = ThisWorkbook ' anpassen
Set WB3 = ThisWorkbook ' anpassen
Set WS1 = WB1.Worksheets("Gattungen")
Set WS2 = WB2.Worksheets("Ergebnis")
Set WS3 = WB3.Worksheets("Gruppe C")
WS3.Rows("2:65536").Delete
letzteZeile = WS1.Range("B65536").End(xlUp).Row
For iZeile = 2 To letzteZeile
If WS1.Cells(iZeile, 2)  "" Then
Select Case WorksheetFunction.CountIf(WS2.Columns(1), WS1.Cells(iZeile, 2))
Case 0
MsgBox "Kein Ergebnis für Gattung " & WS1.Cells(iZeile, 2)
Case 1
WS3.Cells(iZeile, 1) = WS1.Cells(iZeile, 1)
WS3.Cells(iZeile, 2) = WS1.Cells(iZeile, 2)
WS3.Cells(iZeile, 3) = WS2.Cells(Application.Match(WS1.Cells(iZeile, 2), WS2. _
Columns(1), 0), 2)
Case Else
MsgBox "Kein eindeutiges Ergebnis (Mehrfachtreffer) für Gattung " & WS1.Cells( _
iZeile, 2)
End Select
End If
Next iZeile
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige