Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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

Zellbereich

Zellbereich
13.11.2020 22:30:09
MichaelB
Ich komme einfach nicht Weiter. Wie kann ich in einer Userform den Zellbereich Definieren in denen die Einträge der Userform erfolgen. Die Userform wird über Buttons gestartet, dabei wird auch in eine Textbox der Userform ein wert eingetragen. Abhängig von diesem Wert der Textbox sollen alle weiteren eingaben in definierte Zellen geschrieben werden.
Beispiel:
bei Wert "10" in der Textbox der Userform soll die Auswahl in "B7" eingetragen werden.
bei Wert "11" in der Textbox der Userform soll die Auswahl in "B10" eingetragen werden
bei Wert "12" in der Textbox der Userform soll die Auswahl in "B13" eingetragen werden
...
  • 
    Private Sub CommandButton1_Click()
    Worksheets("Tabelle2").Activate
    Dim i As Integer
    'Exam
    With UserForm1.ListBox1
    For i = 0 To .ListCount - 1
    If .Selected(i) Then
    MsgBox .List(i) 'Auswahl wird angegeben
    If Range("B7").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("B7").Value = .List(i)
    ElseIf Range("B8").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("B8").Value = .List(i)
    Else
    ActiveSheet.Range("B9").Value = .List(i)
    End If
    Else
    'nichts passiert
    End If
    Next i
    'Inhalt Textbox3
    If Range("B7").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("B7").Value = UserForm1.TextBox3
    ElseIf Range("B8").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("B8").Value = UserForm1.TextBox3
    ElseIf Range("B9").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("B9").Value = UserForm1.TextBox3
    Else
    'nichts passiert
    End If
    End With
    'Helfer
    With UserForm1.ListBox2
    For i = 0 To .ListCount - 1
    If .Selected(i) Then
    MsgBox .List(i) 'Auswahl wird angegeben
    If Range("D7").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("D7").Value = .List(i)
    ElseIf Range("D8").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("D8").Value = .List(i)
    Else
    ActiveSheet.Range("D9").Value = .List(i)
    End If
    Else
    'nichts passiert
    End If
    Next i
    'Inhalt Textbox4
    If Range("D7").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("D7").Value = UserForm1.TextBox4
    ElseIf Range("D8").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("D8").Value = UserForm1.TextBox4
    ElseIf Range("D9").Value = "" Then  'wenn leer eintragen
    ActiveSheet.Range("D9").Value = UserForm1.TextBox4
    Else
    'nichts passiert
    End If
    End With
    Unload UserForm1
    End Sub
    

    Private Sub CommandButton2_Click()
    'Eingabe Schließen
    Unload UserForm1
    End Sub

    Private Sub UserForm_Initialize()
    'Datum
    UserForm1.TextBox2.Value = Date
    'Listbox Inhalte einlesen
    Worksheets("Geronto").Activate
    UserForm1.ListBox1.RowSource = "rng10e"
    UserForm1.ListBox2.RowSource = "rng10h"
    ListBox1.ListIndex = 0
    'Style der Listbox
    ListBox1.ListStyle = fmListStyleOption
    ListBox2.ListStyle = fmListStyleOption
    'Mehrere Elemente Auswählen
    ListBox1.MultiSelect = fmMultiSelectMulti
    ListBox2.MultiSelect = fmMultiSelectMulti
    End Sub

  • 4
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Zellbereich
    13.11.2020 22:35:27
    ralf_b
    Na Hallo, kann es sein das das nicht dein erster Thread in einem Forum zu dem Thema ist?
    Range("D" & Textbox4).Value
    13.11.2020 22:57:25
    ralf_b
    AW: Zellbereich
    16.11.2020 23:09:09
    MichaelB
    Irgendwie komme ich nicht in die "Select Case" Anweisung? Die Userform wird über Command Buttons gestartet, je nach dem welcher Button es war, wird in TextBox 1 ein wert eingetragen. Der soll dann bei dem Ereignis "Initialize()" in die "Select Case" Anweisung führen.
    hier der Code für einen Button
    
    Sub St10ND()
    UserForm1.TextBox1.Value = 10
    UserForm1.Show
    End Sub
    Sub St11ND()
    UserForm1.TextBox1.Value = 11
    UserForm1.Show
    End Sub
    
    Damit startet die Userform
    
    Private Sub UserForm_Initialize()
    'Datum
    UserForm1.TextBox2 = Date
    Select Case (UserForm1.TextBox1.Value)
    Case 10
    'Löschen
    Worksheets("ND").Activate
    Range("B7:B9,D7:D9").Select
    Selection.ClearContents
    'Listbox Inhalte einlesen
    UserForm1.ListBox1.RowSource = "tbl10e"
    UserForm1.ListBox2.RowSource = "tbl10h"
    ListBox1.ListIndex = 0
    a = "B7"
    b = "B8"
    c = "B9"
    d = "D7"
    e = "D8"
    f = "D9"
    Case 11
    'Löschen
    Worksheets("ND").Activate
    Range("B10:B12,D10:D12").Select
    Selection.ClearContents
    'Listbox Inhalte einlesen
    UserForm1.ListBox1.RowSource = "tbl11e"
    UserForm1.ListBox2.RowSource = "tbl11h"
    ListBox1.ListIndex = 0
    a = "B10"
    b = "B11"
    c = "B12"
    d = "D10"
    e = "D11"
    f = "D12"
    End Select
    'Style der Listbox
    ListBox1.ListStyle = fmListStyleOption
    ListBox2.ListStyle = fmListStyleOption
    'Mehrere Elemente Auswählen
    ListBox1.MultiSelect = fmMultiSelectMulti
    ListBox2.MultiSelect = fmMultiSelectMulti
    End Sub
    

    Kann mir jemand sagen wo mein Fehler liegt? Die Userform startet, in Textbox1 ist der Wert vom Button, Textbox2 enthält das Datum, Listbox 1 und 2 sind leer. Im einzelschritt kann ich sehen, dass die Case Anweisung nur durchlaufen, aber nicht den einzelnen Fall gegangen wird.
    Anzeige
    AW: Zellbereich
    17.11.2020 00:26:52
    Tobias
    Hallo Michael,
    ich würde behaupten im Initialize Event sind die TextBoxen noch auf Standardwert gesetzt. _ Anweisungen aus anderen Subs scheinen in einer Art Warteschlange zu sein und erst danach abgearbeitet werden. Lässt sich über
    
    Dim i As Integer
    For i = 1 To 10
    UserForm1.Controls("TextBox1").Text = "test" & i
    Next
    UserForm1.Show
    
    überprüfen, er ändert der Reihe nach alle Werte von 1-10 anstatt den letzten dann in die Userform zu übernehmen. Mal mit Debug.Print im Initialize Event und im TextBox_Change ausprobieren. Über letzteres kannst du dann denke ich deine Select anweisung laufen mit einer Boolean die auf true gesetzt wird nach dem ersten Durchlaufe
    Sehr überraschendes Verhalten wie ich finde.
    Schöne Grüße
    Tobias
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige