Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Erich, uups... da bin ich mal auf die Reaktion von Carsten gespannt. Ich traue mich hier gar nicht mehr. Das soll dich aber auf gar keinen Fall entmutigen.
Gruß Atilla
Registriert seit: 28.07.2015
Version(en): 365
22.04.2017, 19:59
(Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2017, 20:00 von DbSam.)
Hallo Erich, (22.04.2017, 18:17)sharky51 schrieb: Aber trauen tue ich mich schon. ... So jetzt hab ich mich nochmal getraut :46: Hihi. Hier wird doch niemand gefressen und irgendwie hatten wir es doch auch geahnt. :D (22.04.2017, 18:17)sharky51 schrieb: Hab ja bereits beschrieben welche Randbedingungen beachtet werden sollten. Ich versuche aus Euren Beispielen das mal zusammenzubauen - hoffe ich schaffe es - Zu Deinen Randbedingungen habe ich noch zwei Fragen: Wurden diese in der letzten Version 'V5' alle richtig beachtet? Falls nicht, was wurde vergessen/nicht beachtet/falsch eingebaut? Falls Du Probleme bekommen solltest, dann meldest Du Dich einfach noch einmal hier im Thread mit Deiner Frage. (Denn eine konkrete Frage habe ich soeben nicht entdeckt.) ;)Schönes Wochenende, Gruß Carsten
Registriert seit: 28.07.2015
Version(en): 365
22.04.2017, 20:13
(Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2017, 20:13 von DbSam.)
(22.04.2017, 19:56)atilla schrieb: da bin ich mal auf die Reaktion von Carsten gespannt. Ich traue mich hier gar nicht mehr. *hust* Oh Gott. :20: Welchen Eindruck habe ich denn hier hinterlassen? *hüstelhust* *zumspiegelgeh...* *oderbessernicht* Gruß Carsten :19: Edit: Mach mit, lass mich nicht hängen. :D
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Carsten,
ich habe auch keine Frage gestellt! Wollte nur nicht so einfach die Platte putzen und verduften.
Und die Version 'V5' ist super....!!
Habe mal Deine Userform und alle Makros in meine Mappe kopiert...um in dieser Umgebung zu testen. Da funktioniert die Suche noch nicht so richtg ....muss das mal genauer anschauen.
DANKE!
Registriert seit: 28.07.2015
Version(en): 365
22.04.2017, 21:33
(Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2017, 21:40 von DbSam.)
Hallo Erich, (22.04.2017, 20:13)sharky51 schrieb: Wollte nur nicht so einfach die Platte putzen und verduften. Nett von Dir. :100:
Habe mal Deine Userform und alle Makros in meine Mappe kopiert...um in dieser Umgebung zu testen. Da funktioniert die Suche noch nicht so richtg ....muss das mal genauer anschauen. Ja, die Suche geht in V5 von der zweiten Zeile und von Spalte A bis Spalte B aus ... Das muss alles angepasst werden. Ein paar Hinweise: Ich würde folgende drei Zeilen ganz nach oben setzen, über die Tabellenüberschriften, die haben im Datenbereich eigentlich nichts verloren:
Diese tauchen sonst in der Suche auf und müssen normalerweise immer weggefiltert werden:
weiter: Code: Friend Property Get MyRowNumber() As Long Select Case Me.txtRow Case vbNullString, 0 To 1 'statt 1 die erste Datenzeile MyRowNumber = 2 'statt 2 die erste Datenzeile Case Else MyRowNumber = Me.txtRow End Select End Property
'____________________________________________________________________________
'Überall wo die Range festgelegt wird, statt B Deine letzte Spalte: Set rFind = Range("A" & Me.MyRowNumber - 1 & ":B" & lastCell)
'____________________________________________________________________________
'in der Sub SearchAndSetNumber: If i > 0 Then 'Die 2 steht für die Ausgabespalte, bei Bedarf ändern: .Cells(i, 2) = Me.MyOutputNumber ListEntryAdd "gefunden:" & vbTab & "'" & .Cells(i, 1) & "'" & vbTab & "Zeile: " & i 'die 2 durch Me.MyRowNumber ersetzen: If Me.FrameFilter.ActiveControl.Tag <> 3 Then i = 2 Application.Goto Reference:=.Cells(i, 1), Scroll:=True Else ListEntryAdd "nichts gefunden:" & vbTab & "ab Zeile:" & Me.MyRowNumber & ", Datum: " & Me.txtDate & ", Suchstring: " & Me.txtSearchString End If
'____________________________________________________________________________
Private Sub CheckOptionsFilter() Dim lastCell As Long 'Hier überall A1 durch Deine erste Überschriftszelle ersetzen: 'B sowieso, siehe weiter oben '.cells(2,1 ) - durch .Cells(Me.MyRowNumber, 1) ersetzen
Select Case Me.FrameFilter.ActiveControl.Tag Case 1 With Sheets(Me.MySheetName) lastCell = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:B" & lastCell).AutoFilter Field:=1, Criteria1:=Me.MySearchString Application.Goto Reference:=.Cells(Me.MyRowNumber, 1), Scroll:=True End With Case 2 With Sheets(Me.MySheetName) lastCell = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:B" & lastCell).AutoFilter Field:=2, Criteria1:=Me.MyOutputNumber Application.Goto Reference:=.Cells(2, 1), Scroll:=True End With Case Else With Sheets(Me.MySheetName) lastCell = .Cells(.Rows.Count, 1).End(xlUp).Row .Range("A1:B" & lastCell).AutoFilter End With End Select End Sub
'____________________________________________________________________________
'Hier ebenfalls die 2 durch Me.MyRowNumber ersetzen: Private Sub txtRow_Exit(ByVal Cancel As MSForms.ReturnBoolean) If Not IsNumeric(Me.txtRow) Then Me.txtRow = 2 ElseIf Me.txtRow < 2 Then Me.txtRow = 2 End If End Sub
Für den Anfang sollte das helfen. Es gibt sicher noch mehr Punkte ... Ja, siehste, Pfusch am Bau von mir. Alles nur hingeschmissener Code. Ich hätte doch alles in Klassen und Properties auslagern sollen. Macht zwar erst etwas mehr Arbeit, ist aber viel einfacher zu portieren, zu lesen, zu schreiben und zu pflegen ... Melde Dich bei Problemen. Gruß Carsten
Registriert seit: 14.04.2014
Version(en): 2003, 2007
(22.04.2017, 20:13)DbSam schrieb: Edit: Mach mit, lass mich nicht hängen. :D Hi Carsten, ich habe hier nicht alles verstanden, Du hast das ja auch schon geschrieben, dass Du nicht weißt, ob Du alles verstanden hast. Da hat Erich ja schon fast Glück. Welche Lösung hätte er andernfalls erhalten, wenn Du alles verstanden hättest. :19: Erich hat sich entschieden und Dein Weg scheint ihm zuzusagen, also ist ist es nur gerecht, dass ich Dich jetzt verlasse. :05: Bis zur nächsten Knobelei hoffentlich....
Gruß Atilla
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Carsten, jetzt wird es immer besser. Super! Hier hätte ich doch noch Verbesserungsbedarf: Code: 'in der Sub SearchAndSetNumber: Else ListEntryAdd "nichts gefunden:" & vbTab & "ab Zeile:" & Me.MyRowNumber & ", Datum: " & Me.txtDate & ", Suchstring: " & Me.txtSearchString End If
Diese Meldung kommt ja wenn tatsächlich nix gefunden wird, aber auch wenn es die Suchstelle gibt weil bereits schon mal gesucht wurde und ein Eintrag in Spalte "B" existiert. Könnte man das so abändern dass zwar diese Meldung kommt, aber die Zelle in der der Suchstring enthalten ist trotzdem angesprungen wird "ohne" dass der Eintrag in Spalte "B" sich ändern kann. Das kann als Cross-Check sehr hilfreich sein.
Registriert seit: 28.07.2015
Version(en): 365
Hallo Atilla, (22.04.2017, 22:42)atilla schrieb: ... also ist ist es nur gerecht, dass ich Dich jetzt verlasse. :05: "Da steh ich nun, ich armer Tor, und bin so klug als wie zuvor.“
Einen kleinen Widerspruch muss ich aber doch einlegen: Das ist nicht mein Weg, ich habe ihm seinen als Muster gebaut. (22.04.2017, 22:42)atilla schrieb: Welche Lösung hätte er andernfalls erhalten, wenn Du alles verstanden hättest. :19: Also das würde mich auch brennend interessieren. :D Bis zum nächsten Mal, Gruß Carsten :)
Registriert seit: 28.07.2015
Version(en): 365
22.04.2017, 23:25
(Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2017, 23:25 von DbSam.)
Hallo Erich, dann so als Zwischenlösung, wenn Du keine grundsätzlichen Änderungen an der Suchroutine und deren Aufruf vorgenommen hast : Code: Else ListEntryAdd "nichts gefunden:" & vbTab & "ab Zeile:" & Me.MyRowNumber & ", Datum: " & Me.txtDate & ", Suchstring: " & Me.txtSearchString Me.OptionButton1.SetFocus End If
Der Filter wird dann auf den Suchstring gelegt ... Wie ich schon geschrieben habe ... Grundsätzlich müsste man den Code nochmal überarbeiten und die Subs und Funktionen sinnvoller separieren. Da ist überall noch zuviel 'MischMasch' enthalten, welcher besser separiert werden muss. Dann sind solche Wünsche ein Kinderspiel. Gruß Carsten Edit: Im Userform fehlen auch noch zwei, drei Button zum Suchen und Anzeigen ohne das Kennzeichen zu setzen ... Und ... Und ... :)
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hi Carsten,
was meinst Du mit Und....??????????? Und....???????????
Für Verbesserungen und einfaches und sicheres Handling bin ich immer zu haben!!
|