Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
400to404
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
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suche mit VBA klaptt nur jeweils einmal

Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo*
hatte mich gestern bereits mit meinem Problem a.d. Forum gewandt und zwischenzeitlich selbst mal versucht eine Eingrenzung vorzunehmen. Immer wenn ich innerhalb einer Arbeitsmappe mit untenstehendem Code (den ich nicht zuletzt auch mit Eurer intensiven Mithilfe umstellen konnte)einen Suchlauf nach Datensätzen per Datum starte, funktioniert das nur einmalig. Erneute Versuche werden ignoriert und eine leere Arbeitsmappe wird mir angezeigt. Erst wenn ich Excel vollständig abmelde und neu hochfahre, ist ein weiterer Suchlauf erfolgreich. - Ich habe nun die Vermutung, dass am untenstehenden Code irgendetwas nicht stimmt - denn, solange ich diesen Suchlauf nicht aktiviere und solange somit nicht eine neue Arbeitsmappe generiert wird, läuft alles andere problemlos. Hat jemand eine Idee? - Ist der Code, der ja eine neue Arbeitsmappe mit den gesuchten Datensätzen angzeigt, irgendwie falsch?
Wäre für Eure Mithilfe sehr dankbar.
Gruß - Wolfgang Berger
'Suche nach Datum

Sub MultiSuche(strSearch As Date)
Dim wks As Worksheet
Dim rngFind As Range
Dim lngRow As Long
Dim strFind As String
Workbooks.Add
For Each wks In ThisWorkbook.Worksheets
Set rngFind = wks.Cells.Find(CDate(strSearch))
If Not rngFind Is Nothing Then
strFind = rngFind.Address
Do
lngRow = lngRow + 1
wks.Range(wks.Cells(rngFind.Row, 2), _
wks.Cells(rngFind.Row, 9)).Copy _
Cells(lngRow, 1)
Set rngFind = wks.Cells.FindNext(After:=rngFind)
If rngFind.Address = strFind Then Exit Do
Loop
End If
Next wks
End Sub

AW: Suche mit VBA klaptt nur jeweils einmal
K.Rola
Hallo,
du willst doch sicherlich, dass die Daten in das neu erzeugte Workbook
kopiert werden sollen?
Gruß K.Rola
AW: Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo K.Rola,
Hallo Forumsteilnehmer,
sorry, dass ich mich heute erst wieder melde. - Es ist richtig, die gefundenen Datensätze sollen in die neuerstellte Mappe kopiert werden.- Dieses funktioniert auch einmalig.- Schließe ich die neuerstellte Mappe und suche dann nach neuen Datensätzen mit anderen Inhalten bzw. mit einer neuen Datumsvorgabe, dann bleibt die dann wieder neuerstellte Mappe leer, obschon ich weiß, dass sich unter dem Datum auch Datensätze in der Arbeitsmappe befinden. - Erst, wenn ich Excel vollständig schließe und neu starte, zeigt mir Excel dann auch die neu gesuchten Datensätze an. Das ist so, als wenn durch irgendeine Routine in Excel selbst irgendetwas abgeschaltet wird und erst bei Neustart wieder angeschaltet wird. Nur was und wie?
Weiterhin Danke für Eure Mitwirkung bei meiner Problemlösung.
Gruß - Wolfgang Berger
Anzeige
AW: Suche mit VBA klaptt nur jeweils einmal
K.Rola
Hallo,
Option Explicit

Sub MultiSuche(strSearch As Date)
Dim wks As Worksheet
Dim rngFind As Range
Dim lngRow As Long
Dim strFind As String
Dim wb As Workbook
Set wb = Workbooks.Add(1)
For Each wks In ThisWorkbook.Worksheets
Set rngFind = wks.Cells.Find(CDate(strSearch))
If Not rngFind Is Nothing Then
strFind = rngFind.Address
Do
lngRow = lngRow + 1
wks.Range(wks.Cells(rngFind.Row, 2), _
wks.Cells(rngFind.Row, 9)).Copy _
wb.Sheets(1).Cells(lngRow, 1)
Set rngFind = wks.Cells.FindNext(After:=rngFind)
If rngFind.Address = strFind Then Exit Do
Loop
End If
Next wks
End Sub

Gruß K.Rola
Anzeige
AW: Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo K.Rola,
habe Deinen Code ins Modul kopiert und getestet, leider mit gleichem Ergebnis.- Die einmalige Suche funktioniert, eine erneute nicht mehr - mir wird dann zwar eine neue Arbeitmappe angelegt, aber dann wieder ohne die entsprechenden Datensätze.
Danke nochmals - Vielleicht hast Du oder jemand anderer noch eine Idee?
Gruß - Wolfgang Berger
AW: Suche mit VBA klaptt nur jeweils einmal
K.Rola
Hallo,
wüßte nicht, warum das bei dir nicht klappen soll, bei mir gehts
ohne Schwierigkeiten.
Wie rufst du denn die Sub auf?
Gruß K.Rola
AW: Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo K.Rola
Hallo Forumsteilnehmer,
ist es nicht oft so: man sitzt vor dem Rechner und hat ein Problem. Grübelt und grübelt, wälzt Bücher, befragt das Forum und bekommt gute Hinweise, wie auch jetzt in meinem Fall. Man denkt, das müßte doch dann auch laufen...., nichts passiert.- Und plötzlich nach langer Suche stellt man in irgendeiner Ecke noch ein Makro fest. Das folgende Makro scheint das Übel bzw. die Ursache für mein Problem zu sein. Es soll bewirken, dass in der neuerstellen Mappe bestimmte Summen aus Spalten ermittelt und addiert werden. Wo mag jetzt nur der Fehler liegen, dass bei Weglassen dieses Makros sämtliche Suchläufe hintereinander klappen und mit Makro eben nicht? - Das Makro konnte ich übrigens auch unter intensiver Mitwirkung dieses Forums einbauen.
Danke auch schon jetzt wieder für Eure Mithilfe.
Gruß - Wolfgang Berger
Public

Sub Summe()
Dim a As Long, r As Long, s As Long
Dim Summe As Double, Wert As Double
Dim C As Object
a = 1
For r = 1 To Cells(65536, 8).End(xlUp).Row
Wert = Cells(r, 8).Value
For s = 1 To Cells(65536, 8).End(xlUp).Row
If Cells(s, 8) = Cells(r, 8) Then Summe = Summe + Cells(s, 7)
Next s
With ActiveSheet.Columns(10)
Set C = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If C Is Nothing Then
Cells(a, 9) = Summe
Cells(a, 10) = Wert
a = a + 1
End If
Summe = 0
End With
Next r
End Sub

Anzeige
AW: Suche mit VBA klaptt nur jeweils einmal
Ulf

Sub Summe()
Dim a As Long, r As Long, s As Long
Dim Summe As Double, Wert As Double
Dim C As Object
a = 1
For r = 1 To Cells(65536, 8).End(xlUp).Row
Wert = Cells(r, 8).Value
For s = 1 To Cells(65536, 8).End(xlUp).Row
If Cells(s, 8) = Cells(r, 8) Then Summe = Summe + Cells(s, 7)
Next s
With ActiveSheet.Columns(10)
Set C = .Find(Wert, LookIn:=xlValues, LookAt:=xlWhole)
If C Is Nothing Then
Cells(a, 9) = Summe
Cells(a, 10) = Wert
a = a + 1
End If
Summe = 0
End With
Next r
Set C = Nothing
End Sub

Ulf
AW: Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo Ulf,
Hallo Forumtsteilnehmer,
da funkte Hoffnung auf - endlich das Problem gelöst.- Ergebnis: leider doch nicht. Es verhält sich auch nach Deiner Ergänzung leider weiterhin so.- Erstmalige Suche klappt, Datensätze werden wunderbar angezeigt.- Zweiter Suchlauf: Fehlanzeige - leeres Tabellenblatt. Wo mag der Wurm noch stecken?
Gruß - Wolfgang Berger
Anzeige
AW: Suche mit VBA klaptt nur jeweils einmal
Ulf
Was ist mit der Frage von K.Rola, wie die Sub aufgerufen wird?
Wo ist dieser Code?
Ulf
AW: Suche mit VBA klaptt nur jeweils einmal
Wolfgang
Hallo Ulf,
Hallo K.Rola
Sorry, die Frage hatte ich verdrängt, daher Danke für die Erinnerung.
Gruß Wolfgang
Hier der Code:

Private Sub cmdSearch_Click()
If txtSearch.Text = "" Then Exit Sub
Call MultiSuche(CDate(Me.txtSearch))
With ActiveSheet.Range("K1")
.Value = "Legende:"
.Font.Size = 10
.Font.Bold = True
End With
With ActiveSheet.Range("K2")
.Value = "A = Datum"
.Font.Size = 8
End With
With ActiveSheet.Range("K3")
.Value = "C = Name,Vorname"
.Font.Size = 8
End With
With ActiveSheet.Range("K4")
.Value = "E = Zeit in Minuten"
.Font.Size = 8
End With
With ActiveSheet.Range("K5")
.Value = "F = persönlich oder telefonisch"
.Font.Size = 8
End With
With ActiveSheet.Range("K6")
.Value = "G = Zeit in dezimal"
.Font.Size = 8
End With
With ActiveSheet.Range("K7")
.Value = "H = Kostenträger-Nummer"
.Font.Size = 8
End With
With ActiveSheet.Range("K8")
.Value = "I = Gesamtzeit in dezimal"
.Font.Size = 8
End With
With ActiveSheet.Range("K9")
.Value = "J = Kostenträger-Nr. zu I"
.Font.Size = 8
End With
ActiveSheet.Range("K:K").Application.StandardFont = "Arial"
With ActiveSheet.Range("I:J")
.Font.Bold = True
.Font.ColorIndex = 5
End With
With ActiveSheet.Range("I:I")
.NumberFormat = "0.00"
End With
'Zahlenformat für E
ActiveSheet.Range("E:E").Value = ActiveSheet.Range("E:E").Value
'Dezimalzeit in Spalte G
Dim Zelle As Range
Range(Cells(1, 5), Cells(Cells(Rows.Count, 5).End(xlUp).Row, 5)).Copy Destination:=Cells(1, 7)
For Each Zelle In Range("G1", "G" & Cells(Rows.Count, 7).End(xlUp).Row)
Zelle.Value = Zelle.Value / 6000 * 100
Zelle.NumberFormat = "0.00"
Next
'Sortiermakro
Call Sort
'Makro für Gesamtsumme der jeweiligen Buchungsnummer
Call Summe
Unload Me
End Sub

Anzeige
AW: Suche mit VBA klaptt nur jeweils einmal
Ulf
Also bei mir geht das, keine weitere Idee.
Ulf
AW: Suche mit VBA klaptt nur jeweils einmal
26.03.2004 12:42:54
Wolfgang
Hallo Ulf,
Danke für Deine Rückantwort. Muß mal schauen, wo immer das Problem bei mir dann liegen mag. Ich habe auch heute noch wieder verschiedene Variationen getestet.- Knackpunkt scheint der Code Summe zu sein. Lasse ich den weg, bekomme ich auch fortlaufend die gewünschten Datensaätze angezeigt. Suche ich mit "Summe", läuft es nur einmal und dann wird mir in der Folge nur eine leere Mappe bzw. in den Feldern I und J die Nullen angezeigt.- Versuche mich mal weiter durchzubeissen. Danke
Gruß - Wolfgang Berger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige