Anzeige
Archiv - Navigation
1024to1028
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

Text über Combobox vorgeben

Text über Combobox vorgeben
19.11.2008 20:14:47
Wolfgang
Hallo,
ich habe zwar noch einen anderen Thread mit einem Code offen, der scheint aber wohl nicht realisierbar, darum bin ich noch auf der Suche nach Alternativen und Möglichkeiten. Der untenstehende Auszug aus einem Code würde die jeweilige Spalte nach dem vorgegebenen Text zählen. Wie kann ich evtl. den Code ändern, dass der jeweilige Text einer Combobox als Suchstring genommen werden kann? Gleiches gilt dann für den zweiten Teil, nämlich der MsgBox, die dann den Text der jeweiligen Combobox und dann das Zählergebnis zeigen sollte. Wäre eine solche Umstellung möglich? - Danke schon jetzt wieder für die Rückmeldung.
Gruß - Wolfgang
hier zunächst der Link zum anderen Thread:
https://www.herber.de/forum/archiv/1024to1028/t1025766.htm
hier der Auszug aus dem Code, der dann möglichst als Suchtext den Text der Combobox(1...) erhalten soll:
Dim a As Integer
Dim b As Integer...usw
Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rngFind As Range
Dim lngRow As Long
Dim strFind As String
Dim wb As Workbook
For Each wks In ThisWorkbook.Worksheets
If wks.Name "Zeile" Then
wks.Activate
If CheckBox1.Value = True Then
For i = 1 To 1000
If Cells(i, 1) = "'Text Combobox1" Then
a = a + 1
End If
Next i
End If
If CheckBox2.Value = True Then
For i = 1 To 1000
If Cells(i, 2) = "'Text Combobox2" Then
b = b + 1
End If
Next i
und hier der Auszug aus dem Code mit der MsgBox:
MsgBox a & " = 'Text Combobox1; " & Chr$(10) _
& b & " = 'Text Combobox2 " & Chr$(10) _ usw. (bis Combobox17)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text über Combobox vorgeben
20.11.2008 18:30:00
fcs
Hallo Wolfgang,
hier eine kleine Beispieldatei.
Zum Zählen sollte man dabei besser die entsprechende Tabellenfunktion verwendne und nicht Schleifen.
Gruß
Franz
Hier der Button Code, Checkboxen und Comboboxen sind aus der Symbolleiste Steuerelemente-Toolbox und im Tabellenblatt "Zeile" angeordnet. Bei Verwndung einer Userform kann man ähnlich vorgehen.
Auf die Schnelle ist mir der Code zum Einlesen der Checkbox und Comboboxwerte in einer Schleife nicht eingefallen.

Private Sub CommandButton1_Click()
Dim iCount(1 To 17) As Integer, intI As Integer, i As Integer
Dim arrCheck(1 To 17) As Boolean 'Array für Checkbox status
Dim arrSuch(1 To 17) As String 'Array für Comboboxinhalt
Dim arrSpalte(1 To 17) As Long 'Array für zu durchsuchende Spaltennummer
Dim wks As Worksheet
Dim strMsg As String
Dim wb As Workbook
Set wb = ActiveWorkbook ' oder ThisWorkbook
'Einlesen der Suchbegriffe, Checkboxstatus und zugeordneter Spalten-Nummer
With Me
i = 1: arrCheck(i) = .CheckBox1.Value: arrSuch(i) = .ComboBox1.Value: arrSpalte(i) = 1
i = 2: arrCheck(i) = .CheckBox2.Value: arrSuch(i) = .ComboBox2.Value: arrSpalte(i) = 2
i = 3: arrCheck(i) = .CheckBox3.Value: arrSuch(i) = .ComboBox3.Value: arrSpalte(i) = 3
i = 4: arrCheck(i) = .CheckBox4.Value: arrSuch(i) = .ComboBox4.Value: arrSpalte(i) = 4
i = 5: arrCheck(i) = .CheckBox5.Value: arrSuch(i) = .ComboBox5.Value: arrSpalte(i) = 5
i = 6: arrCheck(i) = .CheckBox6.Value: arrSuch(i) = .ComboBox6.Value: arrSpalte(i) = 6
i = 7: arrCheck(i) = .CheckBox7.Value: arrSuch(i) = .ComboBox7.Value: arrSpalte(i) = 7
i = 8: arrCheck(i) = .CheckBox8.Value: arrSuch(i) = .ComboBox8.Value: arrSpalte(i) = 8
i = 9: arrCheck(i) = .CheckBox9.Value: arrSuch(i) = .ComboBox9.Value: arrSpalte(i) = 9
i = 10: arrCheck(i) = .CheckBox10.Value: arrSuch(i) = .ComboBox10.Value: arrSpalte(i) = 10
i = 11: arrCheck(i) = .CheckBox11.Value: arrSuch(i) = .ComboBox11.Value: arrSpalte(i) = 11
i = 12: arrCheck(i) = .CheckBox12.Value: arrSuch(i) = .ComboBox12.Value: arrSpalte(i) = 12
i = 13: arrCheck(i) = .CheckBox13.Value: arrSuch(i) = .ComboBox13.Value: arrSpalte(i) = 13
i = 14: arrCheck(i) = .CheckBox14.Value: arrSuch(i) = .ComboBox14.Value: arrSpalte(i) = 14
i = 15: arrCheck(i) = .CheckBox15.Value: arrSuch(i) = .ComboBox15.Value: arrSpalte(i) = 15
i = 16: arrCheck(i) = .CheckBox16.Value: arrSuch(i) = .ComboBox16.Value: arrSpalte(i) = 16
i = 17: arrCheck(i) = .CheckBox17.Value: arrSuch(i) = .ComboBox17.Value: arrSpalte(i) = 17
End With
'Tabellenblätter durchsuchen
For Each wks In wb.Worksheets
If wks.Name  "Zeile" Then
'wks.Activate
With wks
For intI = 1 To 17
If arrCheck(intI) = True Then
If arrSuch(intI)  "" Then
iCount(intI) = iCount(intI) + Application.WorksheetFunction.CountIf(.Range(.Cells(1, _
_
arrSpalte(intI)), .Cells(.Rows.Count, arrSpalte(intI)).End(xlUp)), arrSuch(intI))
End If
End If
Next
End With
End If
Next
'meldung vorbereiten
strMsg = "Gefunden wurden: " & vbLf
For intI = 1 To 17
If arrCheck(intI) = True Then
If arrSuch(intI)  "" Then
strMsg = strMsg & vbLf & "Nr " & intI & ":  " & iCount(intI) & "     " & arrSuch(intI)
Else
strMsg = strMsg & vbLf & "Nr " & intI & ":  keine Comboboxauswahl"
End If
Else
strMsg = strMsg & vbLf & "Nr " & intI & ":  nicht gecheckt"
End If
Next
MsgBox strMsg
End Sub


Anzeige
Danke Franz, das klappt gut.
20.11.2008 19:23:37
Wolfgang
Hallo Franz,
zunächst recht herzlichen Dank für Deine Rückmeldung. Ich habe einmal direkt Deinen Code getestet, ohne ihn schon gänzlich anzupassen. So wie ich das spontan sehe, ich verwende ihn nämlich auf einen UF., läuft er schon so problemlos (habe das zumindet an einer Spalte getestet. Hättest Du noch eine Idee, wie ich bestimmte Tabellenblätter aus der Zählung herausnehmen könnte "Start" und "Anleitung". Danke schon jetzt für die Rückmeldung. Ich werde nun zunächst schnell Deinen Code insgesamt anpassen, sollte ich da noch evtl. Fragen haben, melde ich mich wieder.
Gruß - Wolfgang
Anzeige
Da habe ich mich verrannt/vertan
20.11.2008 19:45:19
Wolfgang
Hallo Franz,
Entschuldigung; ich hatte ja schon in diesem Thread auf einen anderen Thread hingewiesen, um meine Grundidee zu erläutern. Mir wird mit Deinem Code, der soweit auch super läuft, nur klar, dass ich dann jeweils die vorkommenden Daten aus der jeweiligen Spalte gezählt bekomme. Mir wird dabei nun auch klar, dass ich dann darin gar keinen Filter habe, wie er in dem anderen Code funktioniert. In dem anderen Code wird nur ein Tabellenblatt angelegt, anstatt die gezählten/gefilterten Daten in einer MsgBox. anzuzeigen. Das heißt, ich müßte immer nur die gefilterten Daten gezählt bekommen. Hättest Du da vielleicht zu dem Code in dem anderen Thread eine Idee, wie ich den evtl. auf Zählen und nicht auf Tabellenblatt erstellen umstellen könnte? - Sorry nochmals, dass ich jetzt erst feststelle, mich mit dieser Überlegung auf dem Holzweg zu befinden. Würde mich über eine erneute Rückmeldung sehr freuen.
Gruß - Wolfgang
Anzeige
AW: Da habe ich mich verrannt/vertan
21.11.2008 09:41:17
fcs
Hallo Wolfgang,
ich hab die Prozedur mal etwas angepasst.
Wenn innerhalb einer Zeile in der Tabelle alle gewählten Kriterien erfüllt werden, dann wird diese Zeile als ein Treffer gezählt.
Für die Treffer werden das Tabellenblatt und die Zeile des Treffers in einem Array gespeichert, so dass du die Informationen ggf. auch weiter verarbeiten kannst.
Gruß
Franz

Private Sub CommandButton1_Click()
Dim intCount As Integer, intI As Integer, i As Integer
Dim arrCheck(1 To 17) As Boolean 'Array für Checkbox status
Dim arrSuch(1 To 17) As String 'Array für Comboboxinhalt
Dim arrSpalte(1 To 17) As Long 'Array für zu durchsuchende Spaltennummer
Dim arrTrefferZeile() As Long 'Array für Treffer-Zeilen
Dim arrTrefferBlatt() As String 'Array für Treffer-Tabellenblatt
Dim bolTreffer As Boolean
Dim lngZeile As Long
Dim wks As Worksheet
Dim strMsg As String
Dim wb As Workbook
Set wb = ActiveWorkbook ' oder ThisWorkbook
'Einlesen der Suchbegriffe, Checkboxstatus und zugeordneter Spalten-Nummer
With Me
i = 1: arrCheck(i) = .CheckBox1.Value: arrSuch(i) = .ComboBox1.Value: arrSpalte(i) = 1
i = 2: arrCheck(i) = .CheckBox2.Value: arrSuch(i) = .ComboBox2.Value: arrSpalte(i) = 2
i = 3: arrCheck(i) = .CheckBox3.Value: arrSuch(i) = .ComboBox3.Value: arrSpalte(i) = 3
i = 4: arrCheck(i) = .CheckBox4.Value: arrSuch(i) = .ComboBox4.Value: arrSpalte(i) = 4
i = 5: arrCheck(i) = .CheckBox5.Value: arrSuch(i) = .ComboBox5.Value: arrSpalte(i) = 5
i = 6: arrCheck(i) = .CheckBox6.Value: arrSuch(i) = .ComboBox6.Value: arrSpalte(i) = 6
i = 7: arrCheck(i) = .CheckBox7.Value: arrSuch(i) = .ComboBox7.Value: arrSpalte(i) = 7
i = 8: arrCheck(i) = .CheckBox8.Value: arrSuch(i) = .ComboBox8.Value: arrSpalte(i) = 8
i = 9: arrCheck(i) = .CheckBox9.Value: arrSuch(i) = .ComboBox9.Value: arrSpalte(i) = 9
i = 10: arrCheck(i) = .CheckBox10.Value: arrSuch(i) = .ComboBox10.Value: arrSpalte(i) = 10
i = 11: arrCheck(i) = .CheckBox11.Value: arrSuch(i) = .ComboBox11.Value: arrSpalte(i) = 11
i = 12: arrCheck(i) = .CheckBox12.Value: arrSuch(i) = .ComboBox12.Value: arrSpalte(i) = 12
i = 13: arrCheck(i) = .CheckBox13.Value: arrSuch(i) = .ComboBox13.Value: arrSpalte(i) = 13
i = 14: arrCheck(i) = .CheckBox14.Value: arrSuch(i) = .ComboBox14.Value: arrSpalte(i) = 14
i = 15: arrCheck(i) = .CheckBox15.Value: arrSuch(i) = .ComboBox15.Value: arrSpalte(i) = 15
i = 16: arrCheck(i) = .CheckBox16.Value: arrSuch(i) = .ComboBox16.Value: arrSpalte(i) = 16
i = 17: arrCheck(i) = .CheckBox17.Value: arrSuch(i) = .ComboBox17.Value: arrSpalte(i) = 17
End With
'Tabellenblätter durchsuchen
For Each wks In wb.Worksheets
Select Case wks.Name
Case "Ziel", "Start", "Anleitung"
'Diese Blätter nicht in Zählung einbeziehen
Case Else
'wks.Activate
With wks
'Zeilenweise prüfen, ob gewählte Kriterien mit Zellinhalten übereinstimmen
For lngZeile = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
bolTreffer = True
For intI = 1 To 17
If arrCheck(intI) = True Then
If arrSuch(intI)  "" Then
If .Cells(lngZeile, arrSpalte(intI)).Value  arrSuch(intI) Then
bolTreffer = False
End If
End If
End If
Next
If bolTreffer = True Then
'Tabellenblatt und Zeile des Treffers in Arrays merken
intCount = intCount + 1
ReDim Preserve arrTrefferBlatt(1 To intCount)
ReDim Preserve arrTrefferZeile(1 To intCount)
arrTrefferBlatt(intCount) = wks.Name
arrTrefferZeile(intCount) = lngZeile
End If
Next
End With
End Select
Next
'meldung vorbereiten
strMsg = "Suckkriterien: " & vbLf
For intI = 1 To 17
If arrCheck(intI) = True Then
If arrSuch(intI)  "" Then
strMsg = strMsg & vbLf & "Spalte " & arrSpalte(intI) & ":  " & arrSuch(intI)
Else
strMsg = strMsg & vbLf & "Spalte " & arrSpalte(intI) & ":  keine Comboboxauswahl"
End If
Else
'strMsg = strMsg & vbLf & "Nr " & intI & ":  nicht gecheckt"
End If
Next
strMsg = strMsg & vbLf & vbLf & "Gesamtzahl Treffer:   " & intCount
strMsg = strMsg & vbLf & vbLf & "Treffer in den einzelen Tabellen:"
'Treffer in Tabellenblättern ermitteln
For Each wks In wb.Worksheets
Select Case wks.Name
Case "Ziel", "Start", "Anleitung"
'Diese Blätter nicht in Zählung einbeziehen
Case Else
i = 0
For lngZeile = 1 To intCount
If arrTrefferBlatt(lngZeile) = wks.Name Then i = i + 1
Next
strMsg = strMsg & vbLf & wks.Name & "  :  " & i
End Select
Next
MsgBox strMsg
End Sub


Anzeige
Danke Franz - 1 Frage noch
21.11.2008 20:16:58
Wolfgang
Hallo Franz,
erneut wieder recht herzlichen Dank für Deine Rückmeldung und alle Achtung für diese Meisterleistung. Der Code funktioniert einwandfrei. Er hat zwar in der Checkbox 15 eine Fehlermeldung gebracht, da ist mir aber nach langem Testen klar geworden, dass das innerhalb der Tabelle lag. Ich freue mich sehr, über Deinen Code so schnelle Abfragen machen zu können. Recht herzlichen Dank für Deine Zeit und Mühen die Du dafür aufgewandt hast. - Vielleicht dennoch eine Frage, wäre denkbar, dass eine Meldung erscheint, wenn noch keine Checkbox angeklickt ist und der Code dann beendet wird? Ich habe das schon selber getestet, bekomme das aber als Abfrage für alle 17 Boxes nicht hin.
Gruß - Wolfgang
Anzeige
hat sich erledigt.
22.11.2008 15:30:36
Wolfgang
Hallo Franz,
ich hatte noch ein weiter "gestöbert" und die Fragen bzgl. der 17 Checkboxes noch wieder an das Forum gerichtet. Die Frage ist geklärt. Herzlichen Dank aber nochmals für Deine Ausarbeitung, einfach nur super! - Einen schönen Tag und ein schönes Wochenende noch.
Herzliche Grüße - Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige