brauche hilfe bei vba/excel Problem
hi,
also ich möchte mit vba eine Grafische Oberfläche bauen,wo man sozusagen aufmaße für einen bau eintragen kann. also tabelle sieht so aus: der kopf hat also bei mir d9-???zb k9 (jenach dem wieviele positionen man eintragen will) enthält halt positionen zb verlegen von 1,5 mm kabel.die spalte a1-?? zb a20(kommt wieder drauf an wieviele räume das aufmaß hat) enthält halt die räume in denen man installiert. nu möchte ich mit einer combobox die positionen in die excel tabelle eintragen lassen und dabei halt immer eine spalte nach rechts (schleife).diese eingetragenen daten sollen in der gleichen combobox aufgelistet werden. und zum anderen soll man mit na anderen combobox die räume (namen) auch in einer schleife von oben nach unten eintragen lassen können.auch das soll in der combobox zu sehen sein. UND NU mein hauptproblem ist mit einer dritten combobox werte in die jeweils richtige zelle einzutragen die ich über die ersten 2 auswählen will also raum und position.
für eure hilfe im vorraus danke
mfg christian
Antwort schreiben
Antwort 1 von Saarbauer vom 07.05.2022, 07:54 Options
hallo,
du solltest mal eine Beispieltabelle einstellen.
Ob das mit den Comoboxen so machbar ist ?
Gruß
Helmut
Antwort 2 von vba-noob vom 07.05.2022, 17:21 Options
http://www.file-upload.net/download-2497025/Mappe1.xlsm.html
hab hier einfach mal die datei hochgeladen...ist nur die tabelle um die es geht...da wo pos1,pos2 steht sollen die leistungen hin und da wo raum1,raum2 steht sollen die räume hin
Antwort 3 von nighty vom 08.05.2022, 09:15 Options
hi all ^^
eine combobox in abhaengigkeit hab ich zwar nicht,aber ein listenfeld in abhaengigkeit(zur zeit 1 zugtiefe)
nach dem selben prinzip ist die combobox aufzubauen
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 1 And Target.Row = 1 Then
Dim suche As Range
Set suche = Worksheets(1).Range("D1" & ":D" & Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Find(Cells(1, 1))
If Not suche Is Nothing Then
With Range("B1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$E$" & suche.Row & ":$G$" & suche.Row
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
End If
Application.EnableEvents = True
End Sub
Antwort 4 von nighty vom 08.05.2022, 09:22 Options
hi all ^^
noch kurz beschreibung
listenfeld spalte a + b
1 liste
D1-D3
Verzweigung weiterer 3 listen
D1=E1-G1
D2=E2-G2
D3=E3-G3
der einfachhalber habe ich die spalten als 1 verzweigung eingesetzt
sollten mehrere verzweigungen erfordert sein,sollte die structur zeilen orientiert sein
wie schon oben erwaehnt leicht portierbar auf eine combobox
gruss nighty
Antwort 5 von vba-noob vom 08.05.2022, 09:50 Options
öhm..kann man des nicht einfachen machen so in der art..mit na while wend schleife....und dann halt mit globalen variablen..für spalte zb variable a und für zeile zb variable b..und dann mit cells(b,a) ansprechen?
Antwort 6 von nighty vom 08.05.2022, 12:13 Options
hi noob ^^
welche tiefe der verschachtelung ist denn gefordert,kann mich ja mal probieren an comboboxen :-))
gruss nighty
Antwort 7 von vba-noob vom 08.05.2022, 15:00 Options
hi,nighty
was meinst du mit verschachtelung?
vieleicht noch was neues..es ist schon das tabellenblatt ausgewählt wo die tabelle drauf ist...nu hab ich wie gesagt 2 comboboxen wo halt in der einen die leistungen angezeigt werden(mit na while wend schleife),die andere listet die räume auf(auch mit while wend schleife)..jetzt brauch ich doch nurnoch iwie, weil ich in der ersten schleife variable a genommen habe und in der zweiten die variable b,sagen der textbox nehme cell(zeile,spalte) also(b,a) oder? funktioniert aber nicht....
gruss
Antwort 8 von Saarbauer vom 08.05.2022, 19:02 Options
Hallo,
das was du willst, geht aus meiner Sicht nur mit einem Makro
Gruß
Helmut
Antwort 9 von vba-noob vom 08.05.2022, 19:34 Options
hallo helmut,
verstanden was ich will hast du ja denke ich.....wenn das mit meiner methode nicht gehen soll,was eigentlich ganz einfach wäre,kannst du mir dann bitte sagen wie du das machen würdest? hab mir halt gedacht über die variablen das machen zu können hier mal meine prog für eine schleife:
Private Sub UserForm_Initialize()
Dim a As Integer, b As Integer
a = 4
While ActiveSheet.cells(9, a) <> "" '(schleife) solange in zeile darunter schreiben wie er werte hat
ComboBox2.AddItem ActiveSheet.cells(9, a)
a = a + 1
Wend
ComboBox2.ListIndex = 0
b = 15
While ActiveSheet.cells(b, 1) <> "" '(schleife) solange in zeile darunter schreiben wie er werte hat
ComboBox3.AddItem ActiveSheet.cells(b, 1)
b = b + 1
Wend
ComboBox3.ListIndex = 0
End Sub
a is halt die schleife für die spalten und b für die zeilen..nu wollt ich iwie cells(a,b).select....wobei a,b die variablen sind die man zuvor über die comboboxen wählt.. funzt aber net
mfg
Antwort 10 von vba-noob vom 09.05.2022, 12:24 Options
hat sich erledigt, hab mir selber geholfen..:)