Registriert seit: 08.02.2017
Version(en): 2016
Hallo!
Ich habe folgendes Problem. Ich habe in einer UserForm eine ComboBox1.List gemacht. Leider funktioniert hier das Scrollen mit der Maus nicht. Ich muss immer rechts mit dem Balken hin und herfahren. Geht euch das auch so, oder gibt es da irgendeine Möglichkeit, dass das Scrollen hier auch funktioniert?
LG Thomas
Excel Version 2016
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Verwende diesen Code (den aus der Antwort, nicht den vom Fragenden): https://stackoverflow.com/questions/4647...with-mouse
Schöne Grüße Berni
Registriert seit: 08.02.2017
Version(en): 2016
ich hab mir das nun angesehen, ehrlich gesagt kenne ich mich nicht aus, was dieser code macht mein aktueller code lautet: Code: Private Sub UserForm_Activate()
Detailinformationen.Caption = "Detailinformationen über ein Panel"
Dim letzte As Long letzte = Cells(Rows.Count, "Q").End(xlUp).Row
ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Add Key:=Range("Q6:Q" & letzte) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Top30").Sort .SetRange Range("P6:BZ" & letzte) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ComboBox1.List = Sheets("Top30").Range("Q6:Q" & letzte).Value ComboBox2.List = Sheets("Top30").Range("Q6:Q" & letzte).Value
End Sub
Private Sub ComboBox1_Change()
Set suche = ThisWorkbook.Worksheets("Top30").Columns("Q").Find(what:=ComboBox1.Value, lookat:=xlWhole)
If Cells(suche.Row, "AD") = 1 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit"
End If End Sub
Excel Version 2016
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
29.01.2019, 13:54
(Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2019, 13:54 von MisterBurns.)
Du musst doch einfach nur den Code kopieren - der obere Code in ein allgemeines Modul, der untere in das Modul der Userform. Deinen Code um die Combobox zu befüllen musst du natürlich auch behalten. Einzig diesen Code kannst du weglassen: Code: Private Sub ComboBox1_Change() Set myRange = Range("Q:Q") 'the range of data NumRows = Application.WorksheetFunction.Count(myRange) '//////////////////////////////////////////////////////////////// Set ComboBoxRange = Range(Cells(4, 17), Cells(3 + NumRows, 17)) 'my data starts at range Q4, Q = 17, A=1, change this according to the range you want to change '//////////////////////////////////////////////////////////////// ComboBox1.ListFillRange = ComboBoxRange.Cells.Address ComboBox1.DropDown End Sub 'optional
Den brauchst du nicht, dafür hast du deine eigene Prozedur.
Schöne Grüße Berni
Registriert seit: 08.02.2017
Version(en): 2016
und in welches allgemeine modul soll ich den code einfügen, in irgend einen?
Excel Version 2016
Registriert seit: 08.02.2017
Version(en): 2016
danke sehr, habs nun schon zusammengebracht
Excel Version 2016
Registriert seit: 08.02.2017
Version(en): 2016
Hallo noch einmal! Jetzt funktioniert zwar das Scrollen, aber nun habe ich aber das problem, dass ich wenn nun aus der Liste etwas auswählen will, dass ein Kombilierungsfehler kommt, dass die Variable "suche" nicht definiert ist. Anbei mein Code: Code: Option Explicit
'optional Dim ComboBoxRange As Range Dim ComboBoxRange2 As Range Dim myRange As Range Dim NumRows 'optional Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call SetComboBoxHook(ComboBox1) End Sub
Private Sub ComboBox1_LostFocus() Call RemoveComboBoxHook End Sub
Private Sub ComboBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call SetComboBoxHook(ComboBox2) End Sub
Private Sub ComboBox2_LostFocus() Call RemoveComboBoxHook End Sub
Private Sub UserForm_Activate()
Detailinformationen.Caption = "Detailinformationen über ein Panel"
Dim letzte As Long letzte = Cells(Rows.Count, "Q").End(xlUp).Row
ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Add Key:=Range("Q6:Q" & letzte) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Top30").Sort .SetRange Range("P6:BZ" & letzte) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ComboBox1.List = Sheets("Top30").Range("Q6:Q" & letzte).Value ComboBox2.List = Sheets("Top30").Range("Q6:Q" & letzte).Value
End Sub
Private Sub ComboBox1_Change()
Set suche = ThisWorkbook.Worksheets("Top30").Columns("Q").Find(what:=ComboBox1.Value, lookat:=xlWhole)
If Cells(suche.Row, "AD") = 1 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit"
Else
If Cells(suche.Row, "AD") = 2 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AB") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AC") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AK") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ Cells(suche.Row, "AS") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit" Else If Cells(suche.Row, "AD") >= 3 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AB") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AC") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AE") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AH") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AK") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ Cells(suche.Row, "AS") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit"
End If End If End If End Sub
Private Sub ComboBox2_Change()
Set suche2 = ThisWorkbook.Worksheets("Auszahlungen").Columns("Q").Find(what:=ComboBox2.Value, lookat:=xlWhole)
MsgBox "Detailinformationen zum Panel """ & ComboBox2.Value & """:" & String(2, vbNewLine) & _ Worksheets("Auszahlungen").Cells(suche2.Row, "U") & String(1, vbNewLine) End Sub
Excel Version 2016
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Ohne Beispielmappe geh ich da nicht auf die Suche...
Schöne Grüße Berni
Registriert seit: 08.02.2017
Version(en): 2016
Habs nun entgültig, hab den Code an eine falsche Position eingefügt. Code: Private Sub UserForm_Activate()
Detailinformationen.Caption = "Detailinformationen über ein Panel"
Dim letzte As Long letzte = Cells(Rows.Count, "Q").End(xlUp).Row
ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Top30").Sort.SortFields.Add Key:=Range("Q6:Q" & letzte) _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Top30").Sort .SetRange Range("P6:BZ" & letzte) .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ComboBox1.List = Sheets("Top30").Range("Q6:Q" & letzte).Value ComboBox2.List = Sheets("Top30").Range("Q6:Q" & letzte).Value
'optional Dim ComboBoxRange As Range Dim myRange As Range Dim NumRows 'optional End Sub Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call SetComboBoxHook(ComboBox1) End Sub
Private Sub ComboBox1_LostFocus() Call RemoveComboBoxHook End Sub Private Sub ComboBox2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Call SetComboBoxHook(ComboBox2) End Sub
Private Sub ComboBox2_LostFocus() Call RemoveComboBoxHook End Sub
End Sub
Private Sub ComboBox1_Change()
Set suche = ThisWorkbook.Worksheets("Top30").Columns("Q").Find(what:=ComboBox1.Value, lookat:=xlWhole)
If Cells(suche.Row, "AD") = 1 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit"
Else
If Cells(suche.Row, "AD") = 2 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AB") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AC") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AK") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ Cells(suche.Row, "AS") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit" Else If Cells(suche.Row, "AD") >= 3 Then MsgBox "Detailinformationen zum Panel """ & ComboBox1.Value & """:" & String(2, vbNewLine) & _ Cells(suche.Row, "W") & String(1, vbNewLine) & _ "erste Auszahlung nach Anmeldung erfolgte nach: " & Cells(suche.Row, "AU") & String(1, vbNewLine) & _ Cells(suche.Row, "X") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AB") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AC") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AE") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AH") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AK") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AM") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AN") & String(1, vbNewLine) & _ " " & Cells(suche.Row, "AO") & String(1, vbNewLine) & _ Cells(suche.Row, "AS") & String(1, vbNewLine) & _ "Ø Verdienst pro Tag: € " & Format(Cells(suche.Row, "AP"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Monat: € " & Format(Cells(suche.Row, "AQ"), "#,##0.00") & String(1, vbNewLine) & _ "Ø Verdienst pro Jahr: € " & Format(Cells(suche.Row, "AR"), "#,##0.00") & String(2, vbNewLine) & _ "Folgende Rangordnungen gibt es:" & String(1, vbNewLine) & _ Cells(suche.Row, "P") & ". Rang nach Beträgen" & String(1, vbNewLine) & _ Cells(suche.Row, "S") & ". Rang nach meisten Auszahlungen" & String(1, vbNewLine) & _ Cells(suche.Row, "U") & ". Rang nach der Häufigkeit"
End If End If End If End Sub
Private Sub ComboBox2_Change()
Set suche2 = ThisWorkbook.Worksheets("Auszahlungen").Columns("Q").Find(what:=ComboBox2.Value, lookat:=xlWhole)
MsgBox "Detailinformationen zum Panel """ & ComboBox2.Value & """:" & String(2, vbNewLine) & _ Worksheets("Auszahlungen").Cells(suche2.Row, "U") & String(1, vbNewLine) End Sub
Excel Version 2016
|