2.5k Aufrufe
Gefragt in Tabellenkalkulation von
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

10 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

du solltest mal eine Beispieltabelle einstellen.
Ob das mit den Comoboxen so machbar ist ?

Gruß

Helmut
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von
ö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?
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi noob ^^

welche tiefe der verschachtelung ist denn gefordert,kann mich ja mal probieren an comboboxen :-))

gruss nighty
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

das was du willst, geht aus meiner Sicht nur mit einem Makro

Gruß

Helmut
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
hat sich erledigt, hab mir selber geholfen..:)
...