Registriert seit: 16.12.2016
Version(en): 2013
20.12.2016, 14:49
Hallo,
ich habe eine Terminplanung in Excel erstellt und versuche jetzt eine umfängliche Suche aufzubauen. Meine Probleme momentan sind: 1. Statt die Anzeige der Zelle möchte ich das der Inhalt der gefundenen Zelle Angezeigt wird 2. Ab der 2. Tabelle Februar zeigt er mir falsche Ergebnisse im Bereich "Minute/Vorname" und "PLZ", wo eigentlich nichts angezeigt werden soll außer Ergebnisse aus der Tabelle "Patienten" 3. Wie kann ich einen Druckbefehl der gesuchten Termine mit einbringen. 4. Die gefundenen Ergebnisse werden zwar in der Tabelle angezeigt, brächte aber noch eine Farbliche Hervorhebung.
habe den Code angehangen.
Wäre Toll wenn mir jemand dabei helfen kann.
Registriert seit: 13.04.2014
Version(en): 365
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 16.12.2016
Version(en): 2013
Hallo, habe die Datei etwas reduziert und im .xslb Format gespeichert damit sie die Gesamtkapazität von 2048 kB im Forum nicht übersteigt.
Registriert seit: 13.04.2014
Version(en): 365
Hallo,
schöne Datei, aber wo sind da Daten, speziell fehlerhafte??????
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr! Über Rückmeldungen würde ich mich freuen.
Registriert seit: 16.12.2016
Version(en): 2013
Hallo,
wegen Datenschutz hatte ich keine Eintragungen übermittel. Alle Patienten relevanten Daten habe ich jetzt gelöscht und den Terminplan gefüllt gelassen.
wie schon beschrieben:
Makro Suche alle startet Userform1 Suchmaske, Bilder im Anhang.
das sind meine Probleme Suche zb. "Dinkler" 1. Statt die Anzeige der Zelle möchte ich das der Inhalt der gefundenen Zelle Angezeigt wird 2. Ab der 2. Tabelle Februar zeigt er mir falsche Ergebnisse im Bereich "Minute/Vorname" und "PLZ", wo eigentlich nichts angezeigt werden soll außer Ergebnisse aus der Tabelle "Patienten" 3. Wie kann ich einen Druckbefehl der gesuchten Termine mit einbringen. 4. Die gefundenen Ergebnisse werden zwar in der Tabelle angezeigt, aber eine Farbliche Hervorhebung wäre gut. 5. Alle Sontage in den Tabellen Jan-Dez sollen mit den dazugehörigen 6 Spalten ausgeblendet werden
Hoffe das jetzt genug Info da ist
Registriert seit: 16.12.2016
Version(en): 2013
Hallo, niemand der helfen kann ???
Registriert seit: 10.04.2014
Version(en): Microsoft 365, mtl. Kanal
Hallo Arni, fachlich werde ich dir nicht helfen können. Zitat:wegen Datenschutz hatte ich keine Eintragungen übermittel.
Alle Patienten relevanten Daten habe ich jetzt gelöscht und den Terminplan gefüllt gelassen. Aber um auf Edgars Frage zurückzukommen: du brauchst (und sollst natürlich) keine sensiblen Daten veröffentlichen. Aber ich denke, dass eine Beispieldatei mit erfundenen Daten, reduziert auf 15-20 Datensätze und mit den angesprochenen fehlerhaften Daten beim Helfen helfen könnte.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Registriert seit: 16.12.2016
Version(en): 2013
Ich habe doch eine Datei mit Daten mit gesendet ???
hier nochmal.
Das ist der Code um des es geht:
Option Explicit Dim wks As Worksheet Dim wkb1, wkb2 As Workbook Dim XBlatt, wks2 As Worksheet Dim XZeile As Long Dim Suchart As String Dim xOpt As Integer Private Sub CheckBox1_Click() If CheckBox1.Value = True Then Suchart = xlWhole Else Suchart = xlPart End If End Sub Private Sub CheckBox2_Click() If CheckBox2.Value = True Then ComboBox1.Enabled = False Else ComboBox1.Enabled = True End If End Sub Private Sub CommandButton1_Click() Dim xSuche, xAdresse, xErste As String Dim y As Boolean Dim arr() As Variant Dim rng As Range Dim iCounter, iRowU As Integer ListBox1.Clear xSuche = TextBox1.Value If xSuche = "" Then MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!" Exit Sub End If If ComboBox1.Value = "" And CheckBox2.Value = False Then MsgBox "Bitte geben Sie ein, wo der Begriff gesucht werden soll!", vbExclamation, "Achtung!" Exit Sub End If
" Es wird alles gefunden! aber in der Suche werden in der Listbox nicht alle Monate gleich angezeigt ( es stehen rechts Namen wo die Felder leer sein sollten)
For iCounter = 1 To ThisWorkbook.Sheets.Count If CheckBox2.Value = True Or Worksheets(iCounter).Name = ComboBox1.Value Then Set rng = Worksheets(iCounter).Cells.Find _ (xSuche, lookat:=Suchart, LookIn:=xlValues) If Not rng Is Nothing Then With Worksheets(iCounter) xErste = rng.Address(False, False) y = True Do Until xAdresse = xErste ReDim Preserve arr(0 To 9, 0 To iRowU) arr(0, iRowU) = .Name arr(1, iRowU) = rng.Address(False, False) "An dieser Stell soll er mir den Inhalt anzeigen" arr(2, iRowU) = .Cells(rng.Row, 1) arr(3, iRowU) = .Cells(rng.Row, 2) arr(4, iRowU) = .Cells(rng.Row, 3) arr(5, iRowU) = .Cells(rng.Row, 4) arr(6, iRowU) = .Cells(rng.Row, 5) arr(7, iRowU) = .Cells(rng.Row, 6) arr(8, iRowU) = .Cells(rng.Row, 7) iRowU = iRowU + 1 Set rng = .Cells.FindNext(after:=rng) xAdresse = rng.Address(False, False) Loop xAdresse = "" xErste = "" End With End If End If Next iCounter If y = False Then MsgBox "Der Suchbegriff wurde nicht gefunden!" Else ListBox1.Column = arr End If End Sub Private Sub CommandButton2_Click() Unload Me End Sub Private Sub CommandButton3_Click() Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate For iCounter = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row xCounter = xCounter + 1 XBlatt.Rows(XZeile).Copy wks2.Rows(xCounter) End If Next iCounter wks2.Activate End Sub Private Sub CommandButton4_Click() Dim iCounter, xCounter As Long Set wkb1 = ThisWorkbook Set wkb2 = Workbooks.Add(1) Set wks2 = wkb2.Sheets(1) wkb1.Activate For iCounter = ListBox1.ListCount - 1 To 0 Step -1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row xCounter = xCounter + 1 XBlatt.Rows(XZeile).Copy wks2.Rows(xCounter) XBlatt.Rows(XZeile).Delete Shift:=xlUp ListBox1.RemoveItem (iCounter) End If Next iCounter wks2.Activate End Sub Private Sub CommandButton5_Click() Dim iCounter As Long If MsgBox("Die markierten Daten werden unwideruflich aus dieser Datei gelöscht." & vbLf & _ "Wollen Sie fortfahren?", vbOKCancel, "Achtung!") = vbOK Then For iCounter = ListBox1.ListCount - 1 To 0 Step -1 If ListBox1.Selected(iCounter) And xOpt = 1 Or xOpt = 2 Then Set XBlatt = Sheets(ListBox1.List(iCounter, 0)) XZeile = Range(ListBox1.List(iCounter, 1)).Row XBlatt.Rows(XZeile).Delete Shift:=xlUp ListBox1.RemoveItem (iCounter) End If Next iCounter End If End Sub
Private Sub Label7_Click() End Sub
" In diesem Bereich brauche ich noch eine Kennzeichnung für die per Doppelklick angesprungenen Zellen""
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Application.GoTo Sheets(ListBox1.List(ListBox1.ListIndex, 0)).Range(ListBox1.List(ListBox1.ListIndex, 1)) End Sub
Private Sub OptionButton1_Click() xOpt = 1 End Sub Private Sub OptionButton2_Click() xOpt = 2 End Sub Private Sub UserForm_Initialize() For Each wks In Worksheets If wks.Name <> ActiveSheet.Name Then ComboBox1.AddItem wks.Name Next Suchart = xlPart xOpt = 1 End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, erst mal zu 3 der 6 Punkte. ************************************************** Zitat:" Es wird alles gefunden! aber in der Suche werden in der Listbox nicht alle Monate gleich angezeigt ( es stehen rechts Namen wo die Felder leer sein sollten) Ich denke, Du meinst damit das: 2. Ab der 2. Tabelle Februar zeigt er mir falsche Ergebnisse im Bereich "Minute/Vorname" und "PLZ", wo eigentlich nichts angezeigt werden soll außer Ergebnisse aus der Tabelle "Patienten" Hm. Das kommt mir auch sonst komisch vor. Es wird eben überall nach den Suchbegriffen gesucht und dann immer wieder der Inhalt aus den Spalten A bis G übernommen --> .Cells(rng.Row, 1) bis .Cells(rng.Row, 7) Müsste das nicht im Prinzip nach unten gehen? Also z.B. .Cells(1, rng.Column) ? Natürlich dann etwas mehr als 1 als Startzeile ************************************************** Zitat: arr(1, iRowU) = rng.Address(False, False) "An dieser Stell soll er mir den Inhalt anzeigen" Damit ist bestimmt das gemeint? 1. Statt die Anzeige der Zelle möchte ich das der Inhalt der gefundenen Zelle Angezeigt wird Der Inhalt einer Zelle? Welcher Zelle? Wie das geht, steht ja eine Zeile tiefer: arr(2, iRowU) = .Cells(rng.Row, 1) Hier wird der Inhalt der Zelle in Spalte A in das Array übernommen und nicht angezeigt. Die Ausgabe in der Listbox erfolgt weiter unten: ListBox1.Column = arr Allerdings hast Du in Deiner Listbox als Überschrift "Zelle" und von daher gesehen passt es doch? ************************************************** Zitat:" In diesem Bereich brauche ich noch eine Kennzeichnung für die per Doppelklick angesprungenen Zellen"" Ich nehme an, dass ist der Punkt: 4. Die gefundenen Ergebnisse werden zwar in der Tabelle angezeigt, aber eine Farbliche Hervorhebung wäre gut. Die Stelle hattest Du weiter oben mit arr(1, iRowU) = rng.Address(False, False) in Dein Array übernommen. Zwischen zwei Makros wäre die Frage, in welcher Form das wo passieren soll. Du könntest z.B. dort im code mit rng.interior.color oder colorindex arbeiten. Allerdings müssten die Farben auch irgendwann wieder raus, was meinst Du, wann? **************************************************
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.12.2016
Version(en): 2013
Hallo, danke das Du dir angesehen hast. Habe aber mittlerweile nochmal komplett von vorne begonnen und etwas anderes erstellt. Danke das Du dir die Mühe gemacht hast es dir anzusehen. Bei der neuen Suche wird mir alles soweit angezeigt und auch in der Tabelle bei Doppelklick gekennzeichnet. Ich bin gerade dran das diese Userform eine Tabellenauswahl bekommt und ich somit gezielt darin suchen kann. Des Weiteren bin ich noch an einer Lösung dran wie ich mir per Auswahl die Leeren Zellen(wo Freie Termine bei welchem Therapeut mit Zeit und Datum sind) in der Userform anzeigen lassen kann. Falls Du Lust hast schau doch mal drüber. Code: Option Explicit
Private Sub CommandButton1_Click() Dim myLookAt As XlLookAt, strFirstAddress As String, rngFound As Range 'Suchart, Erste Adresse als Zeichenfolge, Bereich If Len(TextBox1.Text) = 0 Then 'Textbox leer ?? MsgBox "Suchtext eingeben" Exit Sub End If myLookAt = IIf(CheckBox1.Value, xlPart, xlWhole) 'Suchart XLPART Teilergebnis, XLWhole Exakte Suche With ActiveSheet.UsedRange 'Benutzer Bereich in der Aktiven Tabelle Set rngFound = .Find(What:=TextBox1.Text, LookIn:=xlValues, LookAt:=myLookAt) If rngFound Is Nothing Then MsgBox "Keine Termine vorhanden" Exit Sub End If ListBox1.Clear strFirstAddress = rngFound.Address(0, 0) Do ListBox1.ColumnWidths = "0cm;6cm;1cm;1cm;3cm;3cm;3cm;3cm" ' Breite der Spalte ListBox1.AddItem rngFound.Address(-1, 0) ListBox1.AddItem rngFound.Address(0, 0) ListBox1.List(ListBox1.ListCount - 1, 1) = rngFound.Text ' Name ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(rngFound.Row, 1).Text ' Stunde ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(rngFound.Row, 2).Text ' Minute ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(8, rngFound.Column).Text 'Therapeut ListBox1.List(ListBox1.ListCount - 1, 5) = Cells(rngFound.Row - 1, rngFound.Column).Text 'Behandlung ListBox1.List(ListBox1.ListCount - 1, 6) = Cells(2, rngFound.Column).Text 'Tag ListBox1.List(ListBox1.ListCount - 1, 7) = Cells(4, rngFound.Column).Text 'Tag Set rngFound = .FindNext(rngFound) Loop Until rngFound.Address(0, 0) = strFirstAddress End With End Sub
Private Sub CommandButton3_Click()
Dim zeLB As Long, spLB As Long Dim zeTB As Long, spTB As Long Dim allesDrucken As Boolean ' Zellen leeren
Range("Druckvorlage!A2:P1000") = "" ' Querformat festlegen Worksheets("Druckvorlage").PageSetup.Orientation = xlLandscape '--- Drucker auswählen Application.Dialogs(xlDialogPrinterSetup).Show
'-- Prüfen, ob alles gedruckt werden muss For zeLB = 0 To ListBox1.ListCount - 1 allesDrucken = allesDrucken Or ListBox1.Selected(zeLB) Next zeTB = 1 '--- selektierte Listboxeinträge in Zellen schreiben For zeLB = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(zeLB) Or Not allesDrucken Then zeTB = zeTB + 1 For spLB = 1 To ListBox1.ColumnCount - 1 Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = ListBox1.List(zeLB, spLB) Next End If Next
ThisWorkbook.Unprotect Password:="olli3301" Sheets("Druckvorlage").Visible = True ' Drucke Tabellenblatt Worksheets("Druckvorlage").PrintOut Sheets("Druckvorlage").Visible = False ThisWorkbook.Protect Password:="olli3301" End Sub
Private Sub Label10_Click()
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) If ListBox1.ListIndex > -1 Then If ListBox1.Tag <> "" Then Range(ListBox1.Tag).Interior.ColorIndex = 0 Cells(8, Range(ListBox1.Tag).Column).Interior.ColorIndex = 0 Cells(Range(ListBox1.Tag).Row, 1).Interior.ColorIndex = 43 Cells(Range(ListBox1.Tag).Row, 2).Interior.ColorIndex = 19 End If Range(ListBox1.Value).Select ActiveCell.Interior.ColorIndex = 4 Cells(8, ActiveCell.Column).Interior.ColorIndex = 4 Cells(ActiveCell.Row, 1).Interior.ColorIndex = 4 Cells(ActiveCell.Row, 2).Interior.ColorIndex = 4 ListBox1.Tag = ActiveCell.Address Cancel = True End If End Sub Private Sub UserForm_Initialize() ListBox1.ColumnCount = 8 ' Anzahl der Spalten ListBox1.BoundColumn = 1 ListBox1.ColumnWidths = "0,150" End Sub
Private Sub CommandButton2_Click() If ListBox1.Tag <> "" Then Range(ListBox1.Tag).Interior.ColorIndex = 0 Cells(8, Range(ListBox1.Tag).Column).Interior.ColorIndex = 0 Cells(Range(ListBox1.Tag).Row, 1).Interior.ColorIndex = 43 Cells(Range(ListBox1.Tag).Row, 2).Interior.ColorIndex = 19 End If UserForm2.Hide End Sub
|