AW: an die zelle springen mit Inhalt der ComboBox
04.01.2012 20:50:22
fcs
Hallo Sascha,
hier ein Code-Beispiel. Die Namen von Combobox und Textbox muss du ggf. anpassen.
Wichtig für die Funktion ist die Deklaration der Variablen "Zelle" am Beginn des Userform-Codes.
Bitte sage mir doch worin der Unterschied zwischen Active-X Steuerelementen und den "normalen" Steuerelementen liegt.
Dieser Unterschied ist nur relevant, wenn Steuerelemente direkt in einem Tabellenblatt plaziert werden.
Die Active-X Steuerelementen können mit einem oder mehreren Ereignismakros verknüpft werden. Sie sind flexibler bezüglich der Makro-Programmierung.
Die Formularsteuerelemente sind Eingabe-Elemente, denen ein Makro zugewiesen werden kann.
Formularsteuerelemente sollte man z.B. verwenden, wenn man im Tabellenblatt-Modul keinen VBA-Code haben möchte, da die zugehörigen Makros in allgemeinen Modulen der Datei angelegt werden können.
Die Steuerelemente in Userforms sind mit den Active-X-Elementen verwandt, haben aber zum Teil andere Ereignismakros.
Ich würde aber gerne diese Excel-Datei auch auf MS-Office 2003 laufen lassen - Geht das mit Active X ?
Auch Office 2003 kennt schon Active-X-Elemente. Sie stecken hinter den Elementen der Steuerelemente-Toolbox. Code sollte ohne Probleme in Excel 2003 und 2007 und neuer laufen.
Gruß
Franz
Option Explicit
'Variablendeklaration für Userformmodul
Private Zelle As Range 'Objekt-Variable für gefundene Zelle mit Artikelnummer
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Combobox mit der Artikelnummer
Dim wks As Worksheet
Dim varFind As Variant
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst eine Artikelnummer auswählen!"
Else
Set wks = Tabelle2 'oder = Worksheets("Tabelle2") 'Tabelle in der gesucht werden soll
varFind = Me.ComboBox1.Value
'varFind = Val(Me.ComboBox1.Value) 'evtl. erforderlich, wenn Artikelnummern Zahlen sind
With wks
Set Zelle = .Columns(1).Find(What:=varFind, LookIn:=xlValues, lookat:=xlWhole)
If Zelle Is Nothing Then
MsgBox "Artikel-Nummer in Blatt """ & .Name & """ nicht gefunden!"
Else
'die nachfolgenden 2 Zeilen sind nur erforderlich, wenn die Eingabe-Zeile _
unbedingt angezeigt werden soll
If ActiveSheet.Name wks.Name Then wks.Activate
Zelle.Select
End If
End With
End If
End Sub
Private Sub TextBox1_Change()
'Textbox mit der Anzahl
If Zelle Is Nothing Then
MsgBox "Bitte erst eine Artikelnummer auswählen!"
Else
With Me.TextBox1
If .Value = "" Then
Zelle.Offset(0, 5).ClearContents 'oder Zelle.Offset(0, 5).Value = 0
ElseIf IsNumeric(.Value) Then
Zelle.Offset(0, 5) = CDbl(.Value)
Else
MsgBox "Eingabe für Anzahl ist keine Zahl!"
End If
End With
End If
End Sub