Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: In VBA ein Formularsteuerelement direkt ansteuren

In VBA ein Formularsteuerelement direkt ansteuren
17.02.2015 12:50:20
Daniel
Hallo! Ich würde gerne wissen, wie ich den Eingabebereich eines Kombinationsfelds per VBA verändern kann, OHNE es zu selecten. Hier ist meine SUB. Ich entschuldige mich im Voraus für meine Art des Code schreibens, darum kümmer ich mich später
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

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In VBA ein Formularsteuerelement direkt ansteuren
17.02.2015 12:56:05
ransi
Hallo,
Mach mal so:
Sheets("Tabelle1").DropDowns("DropDown 47").ListFillRange = "Tabelle2!$B$3:$B$" & X

Den Namen des Tabellenblattes musst du anpassen.
rqansi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige