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

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

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

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige