ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1016
1016
EMPFEHLEN
-
Hallo,
VBA ist nicht wirklich mein Ding. Habe nur ab und zu Kleinigkeiten damit gemacht. Meine Vorstellung wäre, eine Umfrage mittels Excel zur Nutzung von EDV zu erstellen. Die Nutzer sollen dabei nicht die Zellen direkt anklicken, sonder über ein Userform geleitet werden. Eine ComboBox in der Userform enthält die Werte aus der Tabelle Spalte B (hab ich hinbekommen - aber Leerzeilen sind noch drin!). Bei Auswahl des entsprechenden Eintrages springt die Maus in die Zelle mit dem entsprechenden Wert in Spalte B. Dann kann der Nutzer über Optionsfelder in der Userform angeben, ob vorhanden, nicht vorhanden und falls nicht vorhanden, ob gewünscht. Diese Werte werden entsprechend hinter den Eintrag in Spalte C, D und E hinterlegt. Am liebsten wäre mir sogar, wenn ich statt Text Kontrollkästchen für ein "Ja" hinterlegen aktivieren könnte. Ebenso soll der Nutzer nach Häufigkeit der Nutzung abgefragt werden, wenn die EDV vorhanden oder gewünscht.
Die Datei hänge ich mal eben an.
-
29.09.10 14:16 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Keine Ahnung wie deine Lösung bis jetzt aussieht. Ich habe mal was in Excel 2000 versucht:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Private Sub Button_Click() If Liste.ListIndex = -1 Then MsgBox "Kein Eintrag ausgewählt", vbOKOnly, "Fehler" Exit Sub End If zeile% = Liste.ListIndex + 2 Cells(zeile%, 2) = IIf(opVorhanden.Value = True, "Ja", "Nein") Cells(zeile%, 3) = IIf(opNichtVorhanden.Value = True, "Ja", "Nein") Cells(zeile%, 4) = IIf(opErwünscht.Value = True, "Ja", "Nein") End Sub Private Sub UserForm_Activate() zeile% = 2 Do While Cells(zeile%, 1) <> "" Liste.AddItem Cells(zeile%, 1) zeile% = zeile% + 1 Loop End Sub
Die UserForm hat ein Listenfeld mit Name "Liste", Optionsbuttons mit Namen "opVorhanden"; "opNichtVorhanden" und "opErwünscht" und einen Button mit dem Namen "Button"
Wird auf den Button geklickt, wird zuerst geprüft ob überhaupt etwas ausgewählt wurde und wenn ja werden die Werte der Optionsbutton mit Hilfe der IIF-Funktion in "Ja" oder "Nein" umgewandelt und in die entsprechende Zellen eingetragen.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Vielen Dank für die Hilfe.
Habe allerdings zum Füllen der Listbox einen anderen Code verwendet. Mit deinem wurden nur die ersten Zeilen meiner Liste gefüllt. Oder ich habe was vergessen.
Habe jetzt aber das Problem, dadurch, dass die Leerzeilen nicht geladen werden, die Werte der Optionsfelder in die falschen Zeilen geschrieben werden. Wie bekomme ich das raus?
Gibt es weiterhin eine Möglichkeit, dass der Nutzer des Formulars gleich mehrere Listbox-Einträge mit einem Mal erfassen kann? Dazu müßte allerdings der Wert, der in den Optionsfeldern angeklickt wird zu jedem Indexeintrag sofort hinterlegt werden, noch bevor der Nutzer auf "Auswahl speichern" klickt. Die Optionsfelder müßten demnach von Auswahl zu Auswahl der Listbox wieder geleert und mit jedem neu gewählten Eintrag neu befüllt werden. Gut wäre auch, wenn bereits bearbeitete Einträge markiert wären damit der Nutzer sieht, welche er schon befüllt hat. Kriegt man so was hin oder ist das zu umständlich?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Private Sub ButtonHardware_Click() 'Prüft ab, ob ein Feld in der ListeHardware gewählt wurde, sonst Fehlermeldung If ListeHardware.ListIndex = -1 Then MsgBox "Kein Eintrag ausgewählt", vbOKOnly, "Fehler" Exit Sub End If 'Schreibt die Werte der Optionsbutton in die entsprechenden Zellen hinter der Hardwareauswahl Zeile% = ListeHardware.ListIndex + 11 Tabelle4.Cells(Zeile%, 2) = IIf(opVorhanden.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 3) = IIf(opErwünscht.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 6) = IIf(opTäglich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 8) = IIf(opWöchentlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 10) = IIf(opMonatlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 12) = IIf(opHalbjährlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 14) = IIf(opNie.Value = True, "Ja", "Nein") End Sub
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Private Sub UserForm_Initialize() Dim Zeile As Long opVorhanden.GroupName = "Vorhanden" opErwünscht.GroupName = "Vorhanden" opVorhandenSoft.GroupName = "VorhandenSoft" opErwünschtSoft.GroupName = "VorhandenSoft" 'Füllt die Harwareliste With ListeHardware .MultiSelect = fmMultiSelectExtended .ListStyle = fmListStyleOption End With For Zeile = 11 To 48 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then _ ListeHardware.AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) Next 'Füllt die Softwareliste With ListeSoftware .MultiSelect = fmMultiSelectExtended .ListStyle = fmListStyleOption End With For Zeile = 52 To 78 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then _ ListeSoftware.AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) Next End Sub
-
01.10.10 16:20 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Erstelle eine zweite Spalte in der Liste und trage hier beim Einlesen der Werte die jeweilige Zeilennummer der Tabelle ein.Habe jetzt aber das Problem, dadurch, dass die Leerzeilen nicht geladen werden, die Werte der Optionsfelder in die falschen Zeilen geschrieben werden. Wie bekomme ich das raus?
Code vb:1 2 3 4 5 6 7
If Cells(a%, 1) <> "" Then With ListBox1 .AddItem Cells(a%, 1) .Column(1, b%) = a% End With b% = b% + 1 End If
Im Beispiel wird einfach wieder mit einer Schleife die Tabelle durchlaufen und die Werte in die Liste eingetragen. a% ist der "Zeilenzähler", b% zählt die Einträge in der Liste.
Bestimmte Einträge farbig oder sonst wie zu markieren ist meines Wissens nach nicht möglich.
Eine Lösung um gleich mehrere Werte mit einem Klick zu übernehmen fällt mir gerade auch nicht ein. Halte es aber auch nicht unbedingt für gut. Da könnte so einiges durcheinander geklickt werden.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Vielen Dank für deine ausdauerende Hilfe
Also irgendwie stell ich mich ein wenig dämlich an... Soll ich eine zweite Spalte in meiner Excel-Liste erstellen oder nur für meine ListBox? Hatte das so verstanden, dass ich die Excel-Liste erweitern soll. Und wie bastel ich deinen Code nun bei mir rein? Funktioniert bei mir irgendwie nicht.
Entweder hier?Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Private Sub UserForm_Initialize() Dim Zeile As Long opVorhanden.GroupName = "Vorhanden" opErwünscht.GroupName = "Vorhanden" opVorhandenSoft.GroupName = "VorhandenSoft" opErwünschtSoft.GroupName = "VorhandenSoft" 'Füllt die Harwareliste With ListeHardware .MultiSelect = fmMultiSelectExtended .ListStyle = fmListStyleOption End With For Zeile = 11 To 48 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then _ ListeHardware.AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) Next 'Füllt die Softwareliste With ListeSoftware .MultiSelect = fmMultiSelectExtended .ListStyle = fmListStyleOption End With For Zeile = 52 To 78 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then _ ListeSoftware.AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) Next End Sub
oder hier?
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Private Sub ButtonHardware_Click() 'Prüft ab, ob ein Feld in der ListeHardware gewählt wurde, sonst Fehlermeldung If ListeHardware.ListIndex = -1 Then MsgBox "Kein Eintrag ausgewählt", vbOKOnly, "Fehler" Exit Sub End If 'Schreibt die Werte der Optionsbutton in die entsprechenden Zellen hinter der Hardwareauswahl Zeile% = ListeHardware.ListIndex + 11 Tabelle4.Cells(Zeile%, 3) = IIf(opVorhanden.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 4) = IIf(opErwünscht.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 6) = IIf(opTäglich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 8) = IIf(opWöchentlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 10) = IIf(opMonatlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 12) = IIf(opHalbjährlich.Value = True, "Ja", "Nein") Tabelle4.Cells(Zeile%, 14) = IIf(opNie.Value = True, "Ja", "Nein") End Sub
-
05.10.10 11:29 #6
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Das müsste bei dir der Teil sein wo die Liste gefüllt wird:
Code vb:1 2 3 4
For Zeile = 11 To 48 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then _ ListeHardware.AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) Next
Das änderst du dann so mal ab:
Code vb:1 2 3 4 5 6 7 8 9
For Zeile = 11 To 48 If Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) <> "" Then With ListeHardware .AddItem Sheets("EDV-Mittel-Erfassung").Cells(Zeile, 1) .Column(1, b%) = Zeile End With b% = b% + 1 End If Next
Beim Listenelement gibt es eine Eigenschaft "ColumnCount", diese steht bei dir auf 1. Hier musst du eine 2 daraus machen. Das meinte ich mit der zweiten Spalte.
Hier wird dann immer die Zeilennummer aus der Tabelle eingetragen.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
Ähnliche Themen
-
UserForm in Excel variabel aufrufen
Von Matschlag im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 13.11.08, 16:02 -
ODBC Abfrage in Excel Userform
Von Lametta 17 im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 27.08.08, 16:07 -
Excel 2007, Abfrage eines Wertes eines Liste und einfügen von Feldern
Von ChriFlex im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 26.06.08, 12:41 -
Excel-Tab via UserForm füllen
Von manthom im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 19.02.08, 20:10 -
Userform von VB in Excel starten
Von Imailer im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 04.07.05, 14:43





Zitieren

Login





