Hallo,
hier mein Userformcode mit der ich in einer Tabelle Suche.
abhängig der Spaltenauswahl kann über die CBO Auswahl Suchkriterium das Tabellenblatt durchsucht werden.
Zusätzlich habe ich noch Frames zu erweiterten Auswahl eingebaut die je nach Auswahl in der Spaltenauswahl aufpoppen.
jetzt zu meinem Problem:
Spaltenauswahl z.B Datum und Auswahl Suchkriterium 19.03.2019, dann über Spaltenauswahl z.B Schicht und über Frame z.B. Früh kommt der Fehler Laufzeitfehler 380.
Habe versucht vorher den Inhalt der CboAuswahl mit "" und Clear zu löschen funktioniert aber nicht?
Brauche mal wieder eure Hilfe.
Gruß Arnold
hier mein Userformcode mit der ich in einer Tabelle Suche.
abhängig der Spaltenauswahl kann über die CBO Auswahl Suchkriterium das Tabellenblatt durchsucht werden.
Zusätzlich habe ich noch Frames zu erweiterten Auswahl eingebaut die je nach Auswahl in der Spaltenauswahl aufpoppen.
jetzt zu meinem Problem:
Spaltenauswahl z.B Datum und Auswahl Suchkriterium 19.03.2019, dann über Spaltenauswahl z.B Schicht und über Frame z.B. Früh kommt der Fehler Laufzeitfehler 380.
Habe versucht vorher den Inhalt der CboAuswahl mit "" und Clear zu löschen funktioniert aber nicht?
Brauche mal wieder eure Hilfe.
Code:
Private Sub CBOAbbrechen_Click()
Unload Me
ESB.Show
End Sub
Private Sub cboAuswahl_Change()
If cboAuswahl = ChrW(63) Then
OpBInArbeit.Value = True
ElseIf cboAuswahl = ChrW(61) Then
OpBOffen.Value = True
ElseIf cboAuswahl = ChrW(60) Then
OpBErledigt.Value = True
ElseIf cboAuswahl = "Früh." Then
OpBFrüh.Value = True
ElseIf cboAuswahl = "Spät." Then
OpBSpät.Value = True
ElseIf cboAuswahl = "Nacht." Then
OpBNacht.Value = True
End If
Call cboSuchen_Click
End Sub
Private Sub cboAuswahl_DropButtonClick()
Dim lngColumn As Long
Dim Wert As Long
Dim i As Integer
If cboAuswAuswahl = "Standby" Then
If cboAuswahl = ChrW(63) Or cboAuswahl = ChrW(61) Or cboAuswahl = ChrW(60) Then
frmSchicht.Visible = False
fmStandby.Visible = True
Else
fmStandby.Visible = False
End If
End If
If cboAuswAuswahl = "Schicht" Then
If cboAuswahl = "Früh." Or cboAuswahl = "Spät." Or cboAuswahl = "Nacht." Then
fmStandby.Visible = False
frmSchicht.Visible = True
Else
frmSchicht.Visible = False
End If
End If
If cboAuswAuswahl.Listindex > -1 Then
With Sheets("Elektronisches Schichtbuch")
lngColumn = Application.Match(cboAuswAuswahl, .Rows(3), 0) ' Spalte ermitteln mit dem Inhalt aus CboAuswahl
cboAuswahl.List = .Range(.Cells(4, lngColumn), .Cells(Rows.Count, lngColumn). _
End(xlUp)).Value
End With
Wert = lngColumn
For i = 0 To cboAuswahl.ListCount - 1
If cboAuswahl.List(i) = Wert Then Exit For
Next
If i = cboAuswahl.ListCount Then cboAuswahl.AddItem Wert
End If
OpBErledigt.Value = False
OpBInArbeit.Value = False
OpBOffen.Value = False
End Sub
Private Sub cboAuswAuswahl_Change()
If cboAuswAuswahl = "Standby" Then
cboAuswahl.Visible = False
LblAuswSuchkriterium.Visible = False
fmStandby.Visible = True
TboStandby.Visible = True
lblstandby.Visible = True
Image9.Visible = False
frmSchicht.Visible = False
ElseIf cboAuswAuswahl = "Schicht" Then
frmSchicht.Visible = True
cboAuswahl.Visible = False
LblAuswSuchkriterium.Visible = False
Image9.Visible = False
fmStandby.Visible = False
Else
fmStandby.Visible = False
TboStandby.Visible = False
lblstandby.Visible = False
LblAuswSuchkriterium.Visible = True
cboAuswahl.Visible = True
Image9.Visible = True
End If
End Sub
Private Sub cboESB_Click()
Unload Auswertung
ESB.Show
End Sub
Private Sub cboHelp_Click()
Sheets("Hilfe").Select
Unload Auswertung
ESB.Show
End Sub
Private Sub cboSuchen_Click()
Dim i As Long, k As Long, m As Long
Dim arr As Variant
Dim arrOut() As Variant
Dim blnGefunden As Boolean
If cboAuswahl.Value = "" Then Exit Sub
With Worksheets("Elektronisches Schichtbuch")
arr = .Range(.Cells(3, 1), .Cells(.UsedRange.Rows.Count, 12)).Value 'Ergebnisse auflisten ab Zeile 4 (Cells (3, 1), ab 0-3 =4 Spalte 1
End With
'Auswertung.lboAuswert.Clear
Auswertung.lboAuswert.ColumnCount = UBound(arr, 2)
For i = 1 To UBound(arr)
For k = 1 To UBound(arr, 2)
If InStr(arr(i, k), cboAuswahl.Value) > 0 Then
blnGefunden = True
Exit For
End If
Next k
If blnGefunden Then
m = m + 1
ReDim Preserve arrOut(1 To UBound(arr, 2), 1 To m)
For k = 1 To UBound(arr, 2)
arrOut(k, m) = arr(i, k)
Next
blnGefunden = False
End If
Next i
If m <> 0 Then lboAuswert.Column = arrOut
End Sub
Private Sub CmdAdmin_Click()
Passwort.Show
Unload Me
End Sub
Private Sub CmdDrucken_Click()
Dim zeLB As Long, spLB As Long
Dim zeTB As Long, spTB As Long
Dim spab As Long, spac As Long
Dim agTB As Long, agLB As Long
Dim allesDrucken As Boolean
Range("Druckvorlage!A4:k65356") = "" 'Bereich in den die Ergebnis eingetragen werden
'--- Drucker auswählen
Application.Dialogs(xlDialogPrinterSetup).Show
With ActiveSheet.PageSetup
.LeftFooter = "&""Calibri""&10&BKassel Getriebebau DL382 H6 Welle &B" '& Chr(10) & "&8Terminabsage nur in dringenden" & Chr(10) & "Fällen, spätestens jedoch " & Chr(10) & "24 Stunden vor der Behandlung." & Chr(10) & "Nicht rechtzeitig abgesagte Termine" & Chr(10) & "werden privat in Rechnung gestellt."
.RightFooter = "&""Calibri""&10&BElektronisches Schichtbuch Abt4170&B" '& Chr(10) ' & "Um Behandlungspausen zu vermeiden" '& Chr(10) & "sowie Termin- und Therapeutenwünsche" & Chr(10) & "zu berücksichtigen, bitte Folgetermine" & Chr(10) & "8 Wochen im Voraus vereinbaren!" & Chr(10) & "&BMittagpause 12 - 14 Uhr&B"
End With
zeLB = 4
'-- Prüfen, ob alles gedruckt werden muss
For zeLB = 0 To lboAuswert.ListCount - 1
allesDrucken = allesDrucken Or lboAuswert.Selected(zeLB)
Next
zeTB = 4
spLB = 11
For zeLB = 0 To lboAuswert.ListCount - 1
If lboAuswert.Selected(zeLB) Or Not allesDrucken Then
For spLB = 0 To lboAuswert.ColumnCount - 1 'Ab welcher Spalte aus der Suchergebnisliste soll gedruckt werden
Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = lboAuswert.List(zeLB, spLB) 'zeTB Zeile, spTB Spalte
Next
zeTB = zeTB + 1
End If
Next
On Error Resume Next
Sheets("Druckvorlage").Visible = True
' Drucke Tabellenblatt
Worksheets("Druckvorlage").PrintOut
Sheets("Druckvorlage").Visible = True
End Sub
Private Sub CmdTeilSuche_Click()
Dim xSuche, xAdresse, xErste As String
Dim Y As Boolean
Dim arr() As Variant
Dim rng As Range
Dim iCounter, iRowU As Integer
Dim Suchart As Boolean
'If cboTeilergebnis.Value = True Then
'Suchart = xlPart
'Else
'Suchart = "xlWhole"
'End If
'TboSuchen.Clear
lboAuswert = ""
cboAuswAuswahl = ""
xSuche = TboSuchen
If xSuche = "" Then
MsgBox "Bitte erst einen Suchbegriff eingeben!", vbExclamation, "Achtung!"
Exit Sub
End If
Set rng = Worksheets("Elektronisches Schichtbuch").Cells.Find _
(xSuche, lookat:=xlPart, LookIn:=xlValues, SearchOrder:=xlByRows, Searchdirection:=xlNext)
If Not rng Is Nothing Then
With Worksheets("Elektronisches Schichtbuch")
xErste = rng.Cells
Y = True
Do Until xAdresse = xErste
ReDim Preserve arr(0 To 12, 0 To iRowU)
'arr(0, iRowU) = .Name
'arr(1, iRowU) = rng.Cells
arr(0, iRowU) = .Cells(rng.Row, 1)
arr(1, iRowU) = .Cells(rng.Row, 2)
arr(2, iRowU) = .Cells(rng.Row, 3)
arr(3, iRowU) = .Cells(rng.Row, 4)
arr(4, iRowU) = .Cells(rng.Row, 5)
arr(5, iRowU) = .Cells(rng.Row, 6)
arr(6, iRowU) = .Cells(rng.Row, 7)
arr(7, iRowU) = .Cells(rng.Row, 8)
arr(8, iRowU) = .Cells(rng.Row, 9)
arr(9, iRowU) = .Cells(rng.Row, 10)
arr(10, iRowU) = .Cells(rng.Row, 11)
arr(11, iRowU) = .Cells(rng.Row, 12)
iRowU = iRowU + 1
Set rng = .Cells.FindNext(after:=rng)
xAdresse = rng.Cells
Loop
xAdresse = ""
xErste = ""
End With
End If
'Next iCounter
If Y = False Then
MsgBox "Der Suchbegriff wurde nicht gefunden!"
Else
lboAuswert.Column = arr
End If
End Sub
Private Sub CmdEinträgeBea_Click()
Unload Auswertung
EintragBearbeiten.Show
End Sub
Private Sub cmdZeitReset_Click()
ActiveSheet.Cells(1, 1).Select
Sheets("Elektronisches Schichtbuch").Select
End Sub
Private Sub Image1_Click()
' Zellen leeren
Dim zeLB As Long, spLB As Long
Dim zeTB As Long, spTB As Long
Dim spab As Long, spac As Long
Dim agTB As Long, agLB As Long
Dim allesDrucken As Boolean
Range("Druckvorlage!A4:k65356") = "" 'Bereich in den die Ergebnis eingetragen werden
'--- Drucker auswählen
Application.Dialogs(xlDialogPrinterSetup).Show
With ActiveSheet.PageSetup
.LeftFooter = "&""Calibri""&10&BKassel Getriebebau DL382 H6 Welle &B" '& Chr(10) & "&8Terminabsage nur in dringenden" & Chr(10) & "Fällen, spätestens jedoch " & Chr(10) & "24 Stunden vor der Behandlung." & Chr(10) & "Nicht rechtzeitig abgesagte Termine" & Chr(10) & "werden privat in Rechnung gestellt."
.RightFooter = "&""Calibri""&10&BElektronisches Schichtbuch Abt4170&B" '& Chr(10) ' & "Um Behandlungspausen zu vermeiden" '& Chr(10) & "sowie Termin- und Therapeutenwünsche" & Chr(10) & "zu berücksichtigen, bitte Folgetermine" & Chr(10) & "8 Wochen im Voraus vereinbaren!" & Chr(10) & "&BMittagpause 12 - 14 Uhr&B"
End With
zeLB = 4
'-- Prüfen, ob alles gedruckt werden muss
For zeLB = 0 To lboAuswert.ListCount - 1
allesDrucken = allesDrucken Or lboAuswert.Selected(zeLB)
Next
zeTB = 4
spLB = 11
For zeLB = 0 To lboAuswert.ListCount - 1
If lboAuswert.Selected(zeLB) Or Not allesDrucken Then
For spLB = 0 To lboAuswert.ColumnCount - 1 'Ab welcher Spalte aus der Suchergebnisliste soll gedruckt werden
Sheets("Druckvorlage").Cells(zeTB, spLB + 1) = lboAuswert.List(zeLB, spLB) 'zeTB Zeile, spTB Spalte
Next
zeTB = zeTB + 1
End If
Next
On Error Resume Next
Sheets("Druckvorlage").Visible = True
' Drucke Tabellenblatt
Worksheets("Druckvorlage").PrintOut
Sheets("Druckvorlage").Visible = True
End Sub
Private Sub Image8_Click()
cboAuswAuswahl = ""
End Sub
Private Sub Image9_Click()
cboAuswahl = ""
End Sub
Private Sub LblAuswSuchkriterium_Click()
End Sub
Private Sub lboAuswert_Click()
End Sub
Private Sub OpBErledigt_Change()
OpBInArbeit.Value = False
OpBOffen.Value = False
If OpBErledigt = True Then
TboStandby = ChrW(60)
cboAuswahl = ChrW(60)
Else
TboStandby = ""
End If
End Sub
Private Sub OpBFrüh_Change()
cboAuswAuswahl = "Schicht"
cboAuswahl = ""
OpBSpät.Value = False
OpBNacht.Value = False
If OpBFrüh = True Then
cboAuswahl = "Früh."
End If
End Sub
Private Sub OpBInArbeit_Change()
OpBErledigt.Value = False
OpBOffen.Value = False
If OpBInArbeit = True Then
TboStandby = ChrW(63)
cboAuswahl = ChrW(63)
Else
TboStandby = ""
End If
End Sub
Private Sub OpBNacht_Change()
cboAuswAuswahl = "Schicht"
OpBFrüh.Value = False
OpBSpät.Value = False
If OpBNacht = True Then
cboAuswahl = "Nacht."
End If
End Sub
Private Sub OpBOffen_Change()
OpBErledigt.Value = False
OpBInArbeit.Value = False
If OpBOffen = True Then
TboStandby = ChrW(61)
cboAuswahl = ChrW(61)
Else
TboStandby = ""
End If
End Sub
Private Sub OpBSpät_Change()
cboAuswAuswahl = "Schicht"
OpBFrüh.Value = False
OpBNacht.Value = False
If OpBSpät = True Then
cboAuswahl = "Spät."
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Nicht schließen über den (x) Button, Abbrechen benutzen"
Cancel = True
End If
End Sub
Private Sub TboSuchen_Change()
cboAuswahl = ""
lboAuswert = ""
cboAuswAuswahl = ""
End Sub
Private Sub UserForm_Initialize()
fmStandby.Visible = False
frmSchicht.Visible = False
TboStandby.Visible = False
lblstandby.Visible = False
Image9.Visible = True
lboAuswert.ColumnCount = 12
lboAuswert.BoundColumn = 1
lboAuswert.ColumnWidths = "0,8cm;2,5cm;2,5cm;4cm;2,5cm;10cm;12cm;0,5cm;12cm;3cm;5cm"
Dim lngRechtesterEintrag As Long
Dim i As Integer
Dim eintrag As String
'Hauptprojekt
lngRechtesterEintrag = Sheets("Elektronisches Schichtbuch").Cells(3, Columns.Count).End(xlToLeft).Column
With Me.cboAuswAuswahl
For i = 1 To lngRechtesterEintrag
eintrag = Sheets("Elektronisches Schichtbuch").Cells(3, i).Value
.AddItem CStr(eintrag)
Next
End With
End Sub
Gruß Arnold