VBA Case Abweisung mit Variablen
Hallo zusammen
Ich habe folgendes Problem.
Ich Arbeite zur Zeit in einer Mühle im Getreidesilo.
Dort werden allen Warenein-ausgänge in einem Buch aufgeschrieben und um die Arbeit zu erleichtern,
habe ich in Excel Tabellenblätter für jedes Silo erstellt bzw. habe ich vor.
Momentan habe ich ca 10-15 Silos erfasst es sind aber ca. 60 an der Zahl und um die Arbeit in Excel zu erleichtern,
habe ich Formulare erstellt in denen ich Umläufe und Wareneingänge verbuche.
Die Silos werden über eine Combobox ausgewählt z.b. Silo 15.
Das Tabellenblatt wähle ich mit einer Case Anweisung aus und die Daten werden dort eingetragen.
Nun zu meiner Frage:
Die Caseanweisung sieht momentan so aus:
Select Case Silo1
Case 13
Sheets("13").Select
Range("A6").Select
Case 14
Sheets("14").Select
Range("A6").Select
Case 15
Sheets("15").Select
Range("A6").Select
End Select
Die Zahlen stehen für die Silonummern.
Ich habe schon erfolglos versucht die Nummern durch eine Variable zu ersetzen, um nicht 50 solcher Case Anweisungen schreiben zu müssen,
was auch ziemlich unübersichtlich wäre.
Ja meine Frage ist hier ob das überhautp mit Variablen funktioniert oder ob es evtl. andere oder bessere Lösung gibt.
Hoffe mir kann hier jemand helfen.
Danke schonmal im Vorraus
Mfg Bischoff
Ich habe folgendes Problem.
Ich Arbeite zur Zeit in einer Mühle im Getreidesilo.
Dort werden allen Warenein-ausgänge in einem Buch aufgeschrieben und um die Arbeit zu erleichtern,
habe ich in Excel Tabellenblätter für jedes Silo erstellt bzw. habe ich vor.
Momentan habe ich ca 10-15 Silos erfasst es sind aber ca. 60 an der Zahl und um die Arbeit in Excel zu erleichtern,
habe ich Formulare erstellt in denen ich Umläufe und Wareneingänge verbuche.
Die Silos werden über eine Combobox ausgewählt z.b. Silo 15.
Das Tabellenblatt wähle ich mit einer Case Anweisung aus und die Daten werden dort eingetragen.
Nun zu meiner Frage:
Die Caseanweisung sieht momentan so aus:
Select Case Silo1
Case 13
Sheets("13").Select
Range("A6").Select
Case 14
Sheets("14").Select
Range("A6").Select
Case 15
Sheets("15").Select
Range("A6").Select
End Select
Die Zahlen stehen für die Silonummern.
Ich habe schon erfolglos versucht die Nummern durch eine Variable zu ersetzen, um nicht 50 solcher Case Anweisungen schreiben zu müssen,
was auch ziemlich unübersichtlich wäre.
Ja meine Frage ist hier ob das überhautp mit Variablen funktioniert oder ob es evtl. andere oder bessere Lösung gibt.
Hoffe mir kann hier jemand helfen.
Danke schonmal im Vorraus
Mfg Bischoff
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131433
Url: https://administrator.de/contentid/131433
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Bischoff!
In der Annahme, das die ComboBox den Silo im Format "Silo 1" zurückgibt und die Sheets nur die Nummer 1 - 60 haben, dann in etwa so:
Gruß Dieter
In der Annahme, das die ComboBox den Silo im Format "Silo 1" zurückgibt und die Sheets nur die Nummer 1 - 60 haben, dann in etwa so:
Private Sub ComboBox1_Change()
Sheets(Split(ComboBox1.Text)(1)).Activate: ActiveSheet.Range("A6").Select
End Sub
Gruß Dieter
Hallo Bischoff!
Sorry, war wohl ein Missverständnis.
Letztes Beispiel war:
Klicke in ComboBox z.B. den Eintrag "Silo 1", dann aktiviere Sheet("1")
In diesem Beispiel:
Klicke in ComboBox z.B. den Eintrag "15", dann aktiviere Sheet("15")
Hier zum besseren Verständnis noch ein Beispiel, dass beim anzeigen der UserForm die ComboBox mit den Nummern 1-60 im Format "01", "02", "60" initialisiert, den ersten Eintrag "01" als Vorauswahl in das Editierfeld schreibt und das dazugehörige Sheet("01") aktiviert.
Das würde dann im Ganzen z.B. so aussehen:
Gruß Dieter
Sorry, war wohl ein Missverständnis.
Letztes Beispiel war:
Klicke in ComboBox z.B. den Eintrag "Silo 1", dann aktiviere Sheet("1")
In diesem Beispiel:
Klicke in ComboBox z.B. den Eintrag "15", dann aktiviere Sheet("15")
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Text).Activate: ActiveSheet.Range("A6").Select
End Sub
Hier zum besseren Verständnis noch ein Beispiel, dass beim anzeigen der UserForm die ComboBox mit den Nummern 1-60 im Format "01", "02", "60" initialisiert, den ersten Eintrag "01" als Vorauswahl in das Editierfeld schreibt und das dazugehörige Sheet("01") aktiviert.
Das würde dann im Ganzen z.B. so aussehen:
Option Explicit
Const SiloBeg = 1
Const SiloEnd = 60
Private Sub UserForm_Initialize()
Dim i As Integer
For i = SiloBeg To SiloEnd
ComboBox1.AddItem Right("0" & i, 2)
Next
ComboBox1.ListIndex = 0
'Löst ein Change-Ereignis aus und aktiviert Sheets("01")
End Sub
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Text).Activate
End Sub
Gruß Dieter