Clever-Excel-Forum

Normale Version: Scollen funktioniert in UserForm nicht
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
Verwende diesen Code (den aus der Antwort, nicht den vom Fragenden):

https://stackoverflow.com/questions/4647...with-mouse
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
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.
und in welches allgemeine modul soll ich den code einfügen, in irgend einen?
danke sehr, habs nun schon zusammengebracht
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
Ohne Beispielmappe geh ich da nicht auf die Suche...
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