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

mit Userform Tabellenblatt aktivieren

mit Userform Tabellenblatt aktivieren
28.05.2014 21:29:04
Magdalena
Guten Abend
Ich habe das folgende Problem: Über eine Userform soll das Tabellenblatt ausgewählt werden, in welches dann die Zahlen eingegeben werden. Wenn ich also als Jahr "2014" eingebe, soll es das Blatt "Rechnungen 2014" nehmen ect. Momentan sieht der Code so aus:
Private Sub CommandButton6_Click()
Dim vSpalte As Variant
Dim c As Range
Dim i As Integer
Dim lngRow As Long
If ListBox1.ListIndex = -1 Then
MsgBox "Bitte erst den Monat auswählen"
ComboBox1.ListIndex = -1
If ListBox2.ListIndex = -1 Then MsgBox "Bitte erst das Jahr auswählen" ComboBox1.ListIndex = -1 Exit Sub End If vSpalte = Array("C", "D", "I", "J", "O", "P", "U", "V", "BB", "BE", "BH", "BN", "BV", "BY", "CB" _ , "CH", "CK", "CN", "DH", "DK", "DN", "DQ", "DT", "DW", "DZ", "EM", "EP", "ES", "EC") ' usw.... If ListBox2.Value = 2013 Then Worksheets("Rechnungen 2013").Activate Else Worksheets("Rechnungen 2014").Activate Set c = .Columns(1).Find(what:=Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then lngRow = c.Row Else lngRow = WorksheetFunction.Match("Name", .Columns(1), 0) End If For i = LBound(vSpalte) To UBound(vSpalte) Me.Controls("TextBox" & i + 1) = .Range(vSpalte(i) & lngRow + ListBox1.ListIndex + _ 1) Next End With End Sub
Fehlermeldung: "Nicht zulässiger oder nicht gekennzeichneter Verweis"
Bevor ich die kursiv geschriebenen Textzeilen eingefügt habe, hat der Code funktioniert, allerdings muss ich jetzt fürs neue Jahr die Möglichkeit haben, das Rechnungsblatt auszuwählen.
Herzliche Grüsse,
Magdalena

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit Userform Tabellenblatt aktivieren
28.05.2014 21:37:00
Magdalena
Update: Ich hab bei der zweiten kursiven Textzelle den Code verändert zu:
If ListBox2.Value = 2013 Then
With Worksheets("Rechnungen SP TH PB 2013")
Else
With Worksheets("Rechnungen SP TH PB 2014")

Die Fehlermeldung mit dem Verweis erhalte ich nicht mehr, jetzt kommt jedoch "Else ohne If" und es wird das Else bei diesem Textabschnitt angegeben...

AW: mit Userform Tabellenblatt aktivieren
28.05.2014 21:58:42
Ewald
Hallo Magdalena,
teste mal so
Dim wks As Worksheet
If ListBox2.Value = 2013 Then
Set wks = Worksheets("Rechnungen 2013")
Else
Set wks = Worksheets("Rechnungen 2014")
Set c = wks.Columns(1).Find(what:=Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
Gruß Ewald

Anzeige
AW: mit Userform Tabellenblatt aktivieren
28.05.2014 22:21:00
Magdalena
Hallo Ewald
Danke für die schnelle Hilfe, hat soweit geklappt. ich habe bei allen .Columns und beim .Range das wks vorne daran geschrieben, da dies jeweils markiert wurde.
Jetzt erhalte ich jedoch ganz am Ende die Fehlermeldung: If-Block ohne End If, dabei wird das letzte "End Sub" markiert.
Der Vollständigkeit halber hier nochmals den Code:
Dim wks As Worksheet
If ListBox2.Value = 2013 Then
Set wks = Worksheets("Rechnungen 2013")
Else
Set wks = Worksheets("Rechnungen 2014")
Set c = wks.Columns(1).Find(what:=Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
lngRow = c.Row
Else
lngRow = WorksheetFunction.Match("Name", wks.Columns(1), 0)
End If
For i = LBound(vSpalte) To UBound(vSpalte)
Me.Controls("TextBox" & i + 1) = wks.Range(vSpalte(i) & lngRow + ListBox1.ListIndex + 1)
Next
End Sub

Liebe Grüsse,
Magdalena

Anzeige
AW: mit Userform Tabellenblatt aktivieren
28.05.2014 22:26:29
Ewald
Hallo Magdalena,
der obere If Block ist nicht geschlossen
Dim wks As Worksheet
If ListBox2.Value = 2013 Then
Set wks = Worksheets("Rechnungen 2013")
Else
Set wks = Worksheets("Rechnungen 2014")
End If
Set c = wks.Columns(1).Find(what:=Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
lngRow = c.Row
Else
lngRow = WorksheetFunction.Match("Name", wks.Columns(1), 0)
End If
For i = LBound(vSpalte) To UBound(vSpalte)
Me.Controls("TextBox" & i + 1) = wks.Range(vSpalte(i) & lngRow + ListBox1.ListIndex + 1)
Next
End Sub
Gruß Ewald

Anzeige
AW: mit Userform Tabellenblatt aktivieren
28.05.2014 22:43:39
Magdalena
Hallo Ewald
Habs jetzt so, bekomme jedoch immer noch die selbe Fehlermeldung...
liebe Grüsse, Magdalena

AW: mit Userform Tabellenblatt aktivieren
28.05.2014 23:01:46
Ewald
Hallo Magdalena,
ganz oben im Code fehlt noch End IF
 Dim lngRow As Long
If ListBox1.ListIndex = -1 Then
MsgBox "Bitte erst den Monat auswählen"
ComboBox1.ListIndex = -1
End If
If ListBox2.ListIndex = -1 Then
MsgBox "Bitte erst das Jahr auswählen"
ComboBox1.ListIndex = -1
Exit Sub
End If
Gruß Ewald

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige