Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Combobox in UF Listindex
#1
Hallo zusammen,

eventuell könnt ihr mir ja helfen.

Ich habe eine Combobox in einer UF. in der Combobox habe ich bestimmte Zeit Intervalle (08:00 bis 09:00 usw.) hinterlegt. Wenn ich das erste Zeit Intervall auswähle und in die TextBox etwas eintrage, wird der Eintrag im Arbeitsblatt Tabelle1 Zeile D66 richtig eingetragen. Wenn ich aber nun das zweite Zeit Intervall auswähle, soll dieses in der Spalte E66 eingetragen werden. das funktioniert bei mir leider nicht.

Hier mein Code:
Code:
Private Sub cboIntervalle_Click()
  
   'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
   If cboIntervalle.ListIndex <> 0 Then
      TextBox1 = Worksheets("Tabelle1").Cells(cboIntervalle.ListIndex + 66, 4)
   Else
      TextBox1 = ""
   End If
  
   'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
   If cboIntervalle.ListIndex <> 1 Then
      TextBox1 = Worksheets("Tabelle1").Cells(cboIntervalle.ListIndex + 66, 5)
   Else
      TextBox1 = ""
   End If
End Sub

Private Sub CommandButton2_Click()
  
   'Einträge aus TextBox werden beim Drücken des Button "übernehmen" in die Zellen geschrieben
   Dim xZeile As Long
   If TextBox1 = "" Then Exit Sub
   If cboIntervalle.ListIndex = 1 Then
      xZeile = [D78].End(xlUp).Row + 1
   Else
      xZeile = cboIntervalle.ListIndex + 1
   End If
  
   Cells(xZeile, 4) = TextBox1
   TextBox1 = ""
  
   'Einträge aus TextBox werden beim Drücken des Button "übernehmen" in die Zellen geschrieben
   If TextBox1 = "" Then Exit Sub
   If cboIntervalle.ListIndex = 2 Then
      xZeile = [E78].End(xlUp).Row + 1
   Else
      xZeile = cboIntervalle.ListIndex + 1
   End If
  
   Cells(xZeile, 5) = TextBox1
   TextBox1 = ""
  
End Sub

Vielen Dang und VG Mario
Antworten Top
#2
Hi Mario,

bitte benutze zum Darstellen des Codes den dritten Schalter von rechts (#). Er ist dadurch erheblich übersichtlicher.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hallo Mario,

so:
Code:
Private Sub cboIntervalle_Click()
   Dim i As Long
  
   'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
   If cboIntervalle.ListIndex > 0 Then
      TextBox1 = Worksheets("Tabelle1").Cells(66, 3 + cboIntervalle.ListIndex)
   Else
      TextBox1 = ""
   End If

End Sub

Wenn die Textboxen durchgängig nummeriert wären, könnte man sie in einer Schleife füllen, z.B. so:

Code:
Private Sub cboIntervalle_Click()
   Dim i As Long
  
   'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
   For i = 1 To 10
      If cboIntervalle.ListIndex > 0 Then
         Me.Controls("TextBox" & i) = Worksheets("Tabelle1").Cells(65 + i, 3 + cboIntervalle.ListIndex).Value
      Else
         Me.Controls("TextBox" & i) = ""
      End If
   Next i

End Sub

sonst musst Du jede Box einzeln innerhalb der If Abfrage aufführen:

Code:
Private Sub cboIntervalle_Click()
   Dim i As Long
  
   'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
      If cboIntervalle.ListIndex > 0 Then
         TextBox1 = Worksheets("Tabelle1").Cells(66, 3 + cboIntervalle.ListIndex).Value
         TextBox2 = Worksheets("Tabelle1").Cells(67, 3 + cboIntervalle.ListIndex).Value
         TextBox3 = Worksheets("Tabelle1").Cells(68, 3 + cboIntervalle.ListIndex).Value
         '....usw
      Else
         TextBox1 = ""
         TextBox2 = ""
         TextBox3 = ""
         '....usw
      End If

End Sub

Und brauchst bei der Combo nur auf Listindex >0 zu prüfen. Ab 1 beginnen bei Dir die Zeiten.
Bei Listindex 0 steht "Intervall".
Dann würde ich beim Laden der Userform bei der Anzeige für die Combo Listindex = 0 voreinstellen, sonst macht der Eintrag ja keinen Sinn und könnte ganz entfallen.
Gruß Atilla
Antworten Top
#4
Hallo Attila,

ich habe die TextBoxen jetzt durchgängig nummeriert und mich für die Schleife entschieden.
Das funktioniert auch bei der Auswahl des ersten Intervalls (08:00 bis 09:00) sehr gut. Wenn ich jedoch das zweite Intervall (09:00 bis 10:00) in der CBO auswähle sollten die Daten ja in die Spalte E66:D66 eingetragen werden. Das funktioniert leider noch nicht. Hast du eventuell noch einen Tipp für mich?

VG Mario
Antworten Top
#5
Hallo Mario,

zeig doch mal den Code, den Du jetzt verwendest.
Gruß Atilla
Antworten Top
#6
Hallo Atilla,

ich verwende jetzt folgenden Code.

Code:
Private Sub UserForm_Initialize()

'Werte in das Formular eintarge. Formular initialisieren

        Dim rngIntervalle As Range

        With Me

        cboIntervalle.List = Range("Intervalle").Value

End With

End Sub


Private Sub cboIntervalle_Click()
    Dim i As Long
    
    'Zell-und Spaltenbereich für Einträge aus TextBox werden festgelegt
    For i = 1 To 13
       If cboIntervalle.ListIndex > 0 Then
          Me.Controls("TextBox" & i) = Worksheets("Tabelle1").Cells(65 + i, 3 + cboIntervalle.ListIndex).Value
                 Else
          Me.Controls("TextBox" & i) = ""
       End If
    Next i

End Sub


Private Sub CommandButton2_Click()



'Einträge aus TextBox werden beim drüchen des Button "übernehmen" in die Zellen geschrieben

Dim xZeile As Long
If TextBox1 = "" Then Exit Sub
If cboIntervalle.ListIndex = 1 Then
xZeile = [D78].End(xlUp).Row + 1
Else
xZeile = cboIntervalle.ListIndex + 1
End If

Cells(xZeile, 4) = TextBox1
Cells(xZeile, 4) = TextBox2

End Sub

VG Mario
Antworten Top
#7
Hallo Mario,

und wie heißen Deine Textboxen?

Die müssen Textbox1, Textbox2, Textbox3 usw heißen.

Wenn sie anders nummeriert sind dann muss das im Code angepasst werden.
Gruß Atilla
Antworten Top
#8
Hallo Attila,

ja sie heißen Textbox1, Textbox2..... bis Textbox13.

Ich glaube, hier muss dies angepasst werden. Hier ist der Bezug ja nur auf D gelegt.

Code:
Private Sub CommandButton2_Click()



'Einträge aus TextBox werden beim drüchen des Button "übernehmen" in die Zellen geschrieben

Dim xZeile As Long
If TextBox1 = "" Then Exit Sub
If cboIntervalle.ListIndex = 1 Then
xZeile = [D78].End(xlUp).Row + 1
Else
xZeile = cboIntervalle.ListIndex + 1
End If

Cells(xZeile, 4) = TextBox1
Cells(xZeile, 4) = TextBox2

End Sub

VG Mario


Code strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
photo Raute_zps3ee56209.jpg

Dabei nicht die TAGs "code" durch den Makro-Code ersetzen!

[Bild: smilie.php?smile_ID=1810]
Antworten Top
#9
Hallo Mario,

ich glaube, wir reden aneinander vorbei.
Ich hatte Dich so verstanden, dass nach Auswahl in der Combo das Einlesen in die Textboxen nicht funktioniert. Dafür habe ich Dir Beispiele gezeigt.

Was funktioniert jetzt und was nicht?
Gruß Atilla
Antworten Top
#10
Hallo Attila,

ich kann ja über die Combo verschiedene Zeitfenster auswählen. Diese stehen auch im Tabellenblatt1 in Spalte D65 bis O65.
Wenn ich jetzt das erste Zeitfenster in der Combo auswähle, sollen die Einträge aus den TextBoxen entsprechend in Zeile D66 bis D78 eingetragen werden.
Das funktioniert auch.
Wenn ich in der Combo das zweite Zeitfenster auswähle, sollen die Einträge aus den TextBoxen entsprechend in Zeile E66 bis E78 eingetragen werden und das funktioniert leider nicht.

VG Mario
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste