In VBA ein Formularsteuerelement direkt ansteuren
17.02.2015 12:50:20
Daniel
Sub Deckelhinzufuegen()
'Abkürzungen definieren
Dim WS As Object, A As String, B As String, C As String, R As Range, S As Object, WB As _
Workbook, path As String, Antwort As Integer, Name As String, x As Integer, Betrag As String
Set WS = Worksheets:
A = "Tabelle1"
B = "Tabelle2"
C = "Tabelle3"
'Zellverknüpfung auf '0' setzen!
WS(B).Range("D3").ClearContents
'MsgBox: Wen möchten Sie auf den Deckel eintragen? Bitte Namen und Vornamen angeben!
'MsgBox: Namen eingeben
'MsgBox: ok drücken
'Name in Eigabebereich einbinden
Antwort = MsgBox("Möchten Sie einen neuen Deckel hinzufügen?", vbQuestion + vbYesNo, "Deckel _
hinzufügen?")
If Antwort = vbYes Then
Name = InputBox("Bitte den vollständigen Namen eigeben (Vorname und Nachname!)", " _
_
Deckel hinzufügen", "Max Mustermann")
If Name = "" Then End
x = 3
Do Until WS(B).Cells(x, 2) = ""
x = x + 1
Loop
Betrag = InputBox("Welcher Betrag soll auf den Deckel von " + Name + " eingezahlt _
_
werden?", "Betrag auf Deckel von " + Name + " einzahlen", "20")
If Betrag = "" Then End
WS(B).Cells(x, 2) = Name
WS(B).Cells(x, 3) = Betrag
WS(C).Range("E13") = WS(C).Range("E13") + Betrag
WS(B).Range("$B$2:$K$" + CStr(x + 2)).Sort key1:=WS(B).Range("B3"), order1:= _
xlAscending, Header:=xlYes
'200 wird als Maximum gesetzt, da mehr Deckel unwarscheinlich sind
WS(A).Shapes.Range(Array("Drop Down 47")).Select
With Selection
.ListFillRange = "Tabelle2!$B$3:$B$" + CStr(x)
End With
WS(A).Range("D16").Select
WS(B).Range("E1").ClearContents
End If
End Sub
Das fett und kursive ist der entscheidende Teil. WS(A) ist schreibgeschützt, daher wird am Ende nochmal WS(A).Range("D16").Select, damit das Kombinationsfeld nicht weiterhin ausgewählt ist, sondern garkeine Zelle (schreibschutz) ausgewählt ist. Es funktioniert, ist aber nicht hübsch. Und ich will nicht mit SELECT arbeiten.Ich danke euch im Voraus für eure Hilfe!
LG Daniel Schöler