Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Gültigkeitsliste als Dropdownfeld erweiterbar?

Frage Microsoft Microsoft Office

Mitglied: GerdReiss

GerdReiss (Level 1) - Jetzt verbinden

04.04.2007, aktualisiert 09.04.2007, 5171 Aufrufe, 1 Kommentar

Hallo,

ich hatte heute morgen schon mal ne Frage gepostet und es wurde mir super weitergeholfen.
Jetzt häng ich aber schon wieder:

Ich möchte ein Liste mit Einnahmen/Ausgaben erstellen.

Einige Posten kehren wieder (sollen auch wg. späterer Auswertung (Pivot) gleich benannt bleiben), manche jedoch nur einmal.
Am liebsten wär mir eine Spalte bei der ich zum Einen aus einem Dropdown-Feld auswählen kann das ich mit "Katalogbegriffen" hinterlege (wie bei Gültigkeit->Liste machbar), zum Anderen aber soll es auch möglich sein, dort auch freie Begriffe einzutragen, also keine Katalogbegriffe. Gültigkeit->Liste erlaubt mir ja nur die in der von mir in der Liste festgelegten Begriffe zu verwenden.
Das Feld sollte diese Einzelbegriffe nicht als neue Katalogbegriffe erfassen bzw. die Liste erweitern, sondern die Katalogbegriffe möchte ich in Form einer hinterlegten Liste, die ich manuell erweitern kann, auswählen.

Geht das? Falls ja wie? Ich steh auf dem Schlauch.

Danke für Eure Hilfe im Voraus.
Mitglied: bastla
09.04.2007 um 01:22 Uhr
Hallo GerdReiss!

Dein Vorhaben lässt sich AFAIK nur mit VBA umsetzen.

Für meinen unten dargestellten Entwurf benötigst Du zunächst eine Mappe mit 2 Tabellen ("Daten" und "Liste").
Trage in die Tabelle "Liste" ab Zelle A3 untereinander einige der vorgegebenen Texte für das DropDown-Feld ein.
Danach kannst Du mit Rechtsklick auf das Blattregister der Tabelle "Daten" den Menüpunkt "Code anzeigen" wählen. In das jetzt angezeigte (große) Codefenster ist das folgende Programm einzufügen:
01.
Option Explicit 
02.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
03.
'Bereich B2:B20 überwachen 
04.
If Not Intersect(Target, Range("B2:B20")) Is Nothing Then frmEingabe.Show 
05.
'Alternative: Gesamte Spalte B überwachen 
06.
'If Target.Column = 2 Then frmEingabe.Show 
07.
End Sub
Je nachdem, ob Du nur einen bestimmten Zellbereich der Tabelle "Daten" nach Deinen Vorstellungen befüllen willst oder die Funktionalität für eine gesamte Spalte benötigt wird, musst Du eine der beiden "If"-Zeilen verwenden. Die nicht benötigte Zeile wird mit dem vorangestellten Apostroph deaktiviert. Im Beispiel werden zur Demonstration nur die Zellen B2:B20 überwacht.

Zusätzlich brauchst Du ein "UserForm"-Steuerelement, welches Du durch Rechtsklick auf "Tabelle1 (Daten)" (in der Baumstruktur links oben), "Einfügen", "UserForm" erhältst.
Wenn Du das eingefügte Formular anklickst, kannst Du links unten dessen Eigenschaften bearbeiten (falls nicht, über "Ansicht/Eigenschaften" die Anzeige dafür einschalten).

Ändere folgende Eintragungen:
Name:frmEingabe
Caption:Eingabe (oder anderer Text --> Fenstertitel)
Height:105
Width:142
StartUpPosition:0 - Manuell

Falls die "Werkzeugsammlung" nicht sichtbar ist, diese über das "Ansicht"-Menü einschalten und ein Element "Kombinationsfeld" ("ComboBox") in die UserForm einzeichnen (Linksklick in der "Werkzeugsammlung" auf "Kombinationsfeld" und dann in der Userform einen Rahmen dafür aufziehen).
Auf gleiche Art und Weise auch eine "Befehlsschaltfläche" ("CommandButton") und ein "Bezeichnungsfeld" ("Label") auf dem Formular platzieren (Position wird mit den nächsten Einstellungen festgelegt).

In den Eigenschaften folgende Eintragungen vornehmen:
ComboBox1:
Name:cboEintrag
Caption:| |"Label1" löschen
Height:15,75
Left:12
Top:6
Width:114


CommandButton1:
Name:btnHinzu
Accelerator:h
Caption:Eintrag zur Liste hinzufügen
Height:24
Left:12
Top:30
Width:114


Label1:
Name:lblStatus
Font:Tahoma, Schriftgrad 7
Heigth:24
Left:12
Top:60
Width:114
WordWrap:True

Danach mit Rechtsklick auf das Element "frmEingabe" in der Baumstruktur für die UserForm "Code anzeigen" wählen und den folgenden Code einfügen:
01.
Option Explicit 
02.
'Position der Liste für Dropdown festlegen (Tabelle "Liste", ab Zelle A3): 
03.
Const sListenBlatt As String = "Liste" 
04.
Const ListeC As Integer = 1 'Spalte A 
05.
Const ListeR As Integer = 3 
06.
 
07.
Private Sub UserForm_Initialize() 
08.
Dim intTop As Integer 
09.
'Positionierung des Eingabeformulars 
10.
intTop = ActiveCell.Top + 110 
11.
frmEingabe.Top = intTop 
12.
frmEingabe.Left = ActiveCell.Left 
13.
btnHinzu.Enabled = True 
14.
'Aktuellen Inhalt der Zelle in ComboBoxFeld übernehmen 
15.
cboEintrag.Text = ActiveCell.Value 
16.
End Sub 
17.
 
18.
Private Sub cboEintrag_Enter() 
19.
'Liste neu befüllen 
20.
Dim R As Integer 
21.
cboEintrag.Clear 
22.
R = ListeR 
23.
Do While Sheets(sListenBlatt).Cells(R, ListeC).Value <> "" 
24.
    cboEintrag.AddItem Sheets(sListenBlatt).Cells(R, ListeC).Value 
25.
    R = R + 1 
26.
Loop 
27.
End Sub 
28.
 
29.
Private Sub cboEintrag_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
30.
Select Case KeyCode 
31.
Case 13 
32.
    Eintragen 
33.
Case 27 'Eingabe abbrechen, ohne den Inhalt der Zelle zu ändern 
34.
    Unload Me 
35.
End Select 
36.
End Sub 
37.
 
38.
Private Sub cboEintrag_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
39.
Eintragen 
40.
End Sub 
41.
 
42.
Private Sub Eintragen() 
43.
ActiveCell.Value = cboEintrag.Text 
44.
'Cursor in nächste Zelle rechts setzen 
45.
Cells(ActiveCell.Row, ActiveCell.Column + 1).Activate 
46.
Unload Me 
47.
End Sub 
48.
 
49.
Private Sub cboEintrag_AfterUpdate() 
50.
'ComboBoxFeld hat neuen Inhalt erhalten, Hinzufügen ermöglichen 
51.
btnHinzu.Enabled = True 
52.
End Sub 
53.
 
54.
Private Sub cboEintrag_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 
55.
'Inhalt des ComboBoxFeldes hat sich geändert - Text kommt als neuer Listeneintrag in Frage 
56.
btnHinzu.Enabled = True 
57.
End Sub 
58.
 
59.
Private Sub btnHinzu_Click() 
60.
'Aktuellen Inhalt des ComboBoxFeldes der Liste hinzufügen 
61.
Dim R As Integer, bAdd As Boolean, Index As Integer 
62.
If Trim(cboEintrag.Text) = "" Then 
63.
    lblStatus.Caption = "<leer> nicht hinzugefügt." 
64.
Else 
65.
    R = ListeR 
66.
    bAdd = True 
67.
    Do While Sheets(sListenBlatt).Cells(R, ListeC).Value <> "" 
68.
        If Sheets(sListenBlatt).Cells(R, ListeC).Value = cboEintrag.Text Then 
69.
            bAdd = False 
70.
            Index = R - ListeR 
71.
        End If 
72.
        R = R + 1 
73.
    Loop 
74.
    If bAdd Then 
75.
        Sheets(sListenBlatt).Cells(R, ListeC).Value = cboEintrag.Text 
76.
        cboEintrag.AddItem cboEintrag.Text 
77.
        Sheets(sListenBlatt).Cells(ListeR, ListeC).Sort _ 
78.
            Key1:=Sheets(sListenBlatt).Cells(ListeR, ListeC), _ 
79.
            Order1:=xlAscending, Header:=xlNo, Orientation:=xlTopToBottom 
80.
        lblStatus.Caption = "<" & cboEintrag.Text & "> hinzugefügt." 
81.
    Else 
82.
        lblStatus.Caption = "<" & cboEintrag.Text & "> war bereits vorhanden." 
83.
        cboEintrag.SetFocus 
84.
        cboEintrag.ListIndex = Index 
85.
    End If 
86.
End If 
87.
'Weiteres Hinzufügen erst sinnvoll, wenn ComboBoxFeld neuen Inhalt erhalten hat 
88.
btnHinzu.Enabled = False 
89.
End Sub
Funktionsweise / Verwendung:
  • Wird eine Zelle des überwachten Bereiches ausgewählt, erfolgt der Aufruf des Eingabeformulars. Dieses wird (bei standardmäßiger Zeilenhöhe) unterhalb der aktuellen Zelle positioniert (Anpassung über die Zeile intTop = ActiveCell.Top + 110).
  • Zunächst wird in das Dropdown-Feld der aktuelle Zelleninhalt übernommen. Dieser kann editiert oder durch einen Eintrag aus der Liste ersetzt werden.
  • Mit der entsprechenden Schaltfläche kann der aktuelle Wert der ComboBox auch der Liste hinzugefügt werden. Diese wird danach aufsteigend sortiert. Leere bzw bereits in der Liste vorhandene Einträge werden nicht hinzugefügt. Beim Vergleich der Einträge werden Groß-/Kleinschreibung unterschieden (lässt sich auf Wunsch ändern). Eventuelle Leerzeichen am Beginn oder Ende des neuen Textes können ebenfalls dazu führen, dass er sich von einem bereits vorhandenen unterscheidet und daher in die Liste aufgenommen wird.
  • Nach Bestätigung mit der Eingabetaste oder per Doppelklick auf die ComboBox wird der dann aktuelle Inhalt in die Tabelle eingetragen und der Zellcursor in die benachbarte Zelle rechts platziert.
  • Ein Abbruch mit Esc bewirkt, dass sich der Inhalt der Zelle nicht ändert und die Zelle markiert bleibt, sodass sie "normal" bearbeitet werden kann.
  • Die Liste für die ComboBox kann auch manuell ergänzt werden, es dürfen dabei nur keine Zellen leer bleiben. Die Adresse der ersten Zelle der Liste (Blattname, Spalte, Zeile) ist im Programm der UserForm zu hinterlegen (siehe Kommentar).

Gutes Gelingen!
bastla
Bitte warten ..
Ähnliche Inhalte
TK-Netze & Geräte
Telefonanlage um VoIP erweiterbar?
Frage von mabue88TK-Netze & Geräte5 Kommentare

Hallo, in einem Gebäude besteht momentan schon folgender Aufbau: - Fritzbox 6360 Cable - Eumex 800 - Externer S0-Bus ...

JavaScript
Dropdownfeld auslesen und mit AJAX und JS an PHP senden
gelöst Frage von ITFloriJavaScript7 Kommentare

Hallo zusammen, ich versuche gerade die Auswahl eines Dropdown Menüs in eine Variable schreiben zu lassen und Sie mir ...

SAN, NAS, DAS
Empfehlung größere Storagelösung 100-150TB und erweiterbar?
Frage von ForsetiSAN, NAS, DAS3 Kommentare

Hallo, Hat jemand Empfehlungen bzgl. Storagelösungen im Bereich von ~100-150TB oder mehr? Gebraucht wird es für den Einsatz in ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 4 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 11 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 13 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 16 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...