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

Listenbox gibt Zielblatt vor

Listenbox gibt Zielblatt vor
19.05.2015 12:20:16
matthias
Hallo,
ich würde mir gerne in einer Userform mit zwei Textboxen erstellen und einer Listenbox.
Die Textboxen sind beschreibbar mit Name und Vorname. In der Listenbox kann das Tabellenblatt ausgewählt werden in dem die Daten dann beginnnend in A2 und B2 aufgelistet werden.
Die Userform etc ist kein Problem, aber mit dem Code weis ich nicht wie ich das lösen soll. :(
Wie kann man sowas lösen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listenbox gibt Zielblatt vor
19.05.2015 12:48:42
UweD
Hallo
so ?
Private Sub CommandButton1_Click()
With Sheets(ListBox1.Value)
.Range("A2") = TextBox1.Value
.Range("B2") = TextBox2.Value
End With
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To Sheets.Count
UserForm1.ListBox1.AddItem Sheets(i).Name
Next
End Sub

Gruß UweD

AW: Listenbox gibt Zielblatt vor
19.05.2015 13:43:19
matthias
Vielen Dank.
Passt super.
Ist es noch möglich, das Ganze so zu erweitern, dass immer die letzte freie Zeile im ausgewählten Sheet beschrieben wird?
Toll wäre noch, wenn die Userform beim Upload nicht geschlossen wird, sondern nur wieder geleert wird um einen neuen Datensatz eingeben zu können.
Danke.

Anzeige
AW: Listenbox gibt Zielblatt vor
19.05.2015 14:04:02
UweD
Hallo nochmal
dann so
Private Sub CommandButton1_Click() 'einfügen
Dim LR%
If ListBox1.Value  "" Then
With Sheets(ListBox1.Value)
LR = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'erste freie Zeile der Spalte A
.Cells(LR, 1) = TextBox1.Value
.Cells(LR, 2) = TextBox2.Value
'rücksetzen
TextBox1.Value = ""
TextBox2.Value = ""
ListBox1.Value = ""
End With
Else
MsgBox "Kein Blatt ausgewählt"
End If
End Sub
Private Sub CommandButton2_Click() 'schliessen
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To Sheets.Count
ListBox1.AddItem Sheets(i).Name
Next
End Sub
Gruß UweD

Anzeige
AW: Listenbox gibt Zielblatt vor
19.05.2015 14:22:11
matthias
TipTop.
Funktionert super.
Danke für deine tolle Hilfe.
Zwei letzte Anpassungen wäre mir noch recht.
- Kann man automatisch das Datum und die Uhrzeit des jeweiligen Eintrages noch mit in die Tabellenblätter aufnehmen, sprich wann der Eintrag getätigt wurde.
- Kann man z.b den Code so anpassen, dass man im Code hinterlegen kann welche Blätter zur Auswahl stehen sollen?
Es ist nämlich so, dass ich nicht alle Blätter benötige.
Vielen Danke im Voraus.

AW: Listenbox gibt Zielblatt vor
19.05.2015 14:44:16
UweD
Hi
Hier mit Datum, Uhrzeit und Benutzer
Private Sub CommandButton1_Click() 'einfügen
Dim LR%
If ListBox1.Value  "" Then
With Sheets(ListBox1.Value)
LR = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'erste freie Zeile der Spalte A
.Cells(LR, 1) = TextBox1.Value
.Cells(LR, 2) = TextBox2.Value
.Cells(LR, 3) = Format(Now, "DD.MM.YYYY hh:mm") ' Datum und Zeit
.Cells(LR, 4) = Environ("Username") ' Benutzer
'rücksetzen
TextBox1.Value = ""
TextBox2.Value = ""
ListBox1.Value = ""
End With
Else
MsgBox "Kein Blatt ausgewählt"
End If
End Sub
Private Sub CommandButton2_Click() 'schliessen
Unload Me
End Sub

Fix vorgeben:
Private Sub UserForm_Initialize()
ListBox1.AddItem "Tabelle2"
ListBox1.AddItem "Tabelle3"
End Sub
Oder so: Hier wird eingeschränkt, dass Tabellennamen mit z.B. "Eingabe" beginnen
Private Sub UserForm_Initialize()
Dim i&
For i = 1 To Sheets.Count
If Sheets(i).Name Like "Eingabe*" Then ListBox1.AddItem Sheets(i).Name
Next
End Sub
Gruß UweD

Anzeige
AW: Listenbox gibt Zielblatt vor
20.05.2015 16:19:38
matthias
Super geht wunderbar.
Jedoch habe ich bemerkt, dass die Dateinblätter schreibsicher sein müssen.
Die Datei wird von mehreren bearbeitet.
Es sollte deshalb grunsätlich auf allen Blätter der Schreibschutz aktiv sein.
Wenn man aber dann den jeweiligen Eintrag setzt, sollte das betreffende Blatt entsperrt werden und danach wieder geschützt werden.
Ich hätte es schon über den Code
Sub AlleBlaetterSchuetzen()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
sh.Protect Password:="123"
Next sh
End Sub
Probiert. Funktioniert auch, aber es dauert zu lange bis er von allen Blättern den Schutz entfernt.
Danach kann dann erst der nächste Datensatz gschrieben werden.
Hast du hierzu eine Lösung?
Danke.

Anzeige
AW: Listenbox gibt Zielblatt vor
20.05.2015 17:10:36
UweD
Hallo
Du kannst doch vor dem Schreiben nur das EINE entsperren und dann auch auch nur Das wieder zurücksperren. (ungetestet)

With Sheets(ListBox1.Value)
.Unprotect Password:="123"
LR = .Cells(Rows.Count, 1).End(xlUp).Row + 1 'erste freie Zeile der Spalte A
.Cells(LR, 1) = TextBox1.Value
.Cells(LR, 2) = TextBox2.Value
.Cells(LR, 3) = Format(Now, "DD.MM.YYYY hh:mm") ' Datum und Zeit
.Cells(LR, 4) = Environ("Username") ' Benutzer
.Protect Password:="123"
'rücksetzen
TextBox1.Value = ""
TextBox2.Value = ""
ListBox1.Value = ""
End With
Else
MsgBox "Kein Blatt ausgewählt"
End If
End Sub
Gruß UweD
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige