Moi,
Voisiko joku auttaa Exelin makrojen kanssa. Minulla on exelin "sheet2" valilehdella listattu laitteita sarakkeeseen B, jotka pitaisi saada poimittua "sheet1" valilehdella olevaan TextBox1:een. Kun laite on valittu TextBoxissa, pitaisi tulla lista laitten malleista ("sheet2, sarake C")samaan textBox1:een tai TextBox2:een, josta voisi valita yhden tai useamman mallin. Nama laitteet pitaisi saada siirrettya ns. "valinta ikkunaan" ts. TexBox3:een. Tarvittaessa uusia laitteita pitaisi pystya lisaamaan TextBox3:een. "Save" napilla lista pitaisi saada "Sheet3" valilehdelle ja "reset" napilla TextBox3 tyhjaksi.
Olen yrittanyt tehda ko. makroa huonolla menestyksella. Olisin kiitollinen jos joku voisi jeesata.
No moi jannu!
lähtöajatuksessasi on hieman heittoa, mutta tässä yksi toteutusmalli josta lähteä liikkeelle ja jota soveltaa...
VBA-projektin Module1 näyttäisi esim...
Sub auto_open() listbox1_fill End Sub Sub listbox1_fill() Taul1.ListBox1.Clear Taul1.CommandButton1.Visible = False For i = 1 To Taul2.Cells.SpecialCells( _ xlCellTypeLastCell).Column If Taul2.Cells(1, i).Value <> "" Then Taul1.ListBox1.AddItem _ Taul2.Cells(1, i).Value End If Next i End Sub
Taul1 (Sheet1) sisältäisi 1 komentopainike- ja 2 ListBox-ohjausobjektia
ListBox2 asetukset:
ListStyle - frmListStyleOption
Multiselect - frmMultiSelect
ohjausobjektien tapahtuma-aliohjelmien koodit:
Private Sub ListBox1_Click() Taul1.ListBox2.Clear For i = 1 To Taul2.Cells.SpecialCells( _ xlCellTypeLastCell).Column If Taul2.Cells(1, i) = _ Taul1.ListBox1.List(Taul1.ListBox1.ListIndex) Then For j = 2 To Taul2.Cells.SpecialCells( _ xlCellTypeLastCell).row If Taul2.Cells(j, i) <> "" Then Taul1.ListBox2.AddItem _ Taul2.Cells(j, i).Value End If Next j Exit Sub End If Next i End Sub Private Sub ListBox2_Change() Dim hasSelectedItems As Boolean hasSelectedItems = False For i = 0 To Taul1.ListBox2.ListCount - 1 If Taul1.ListBox2.Selected(i) Then hasSelectedItems = True End If Next i If hasSelectedItems Then Taul1.CommandButton1.Visible = True Else Taul1.CommandButton1.Visible = False End If End Sub Private Sub CommandButton1_Click() Dim srow srow = Taul3.Cells.SpecialCells(xlCellTypeLastCell).row + 1 Taul3.Cells(srow, 1).Value = _ Taul1.ListBox1.List( _ Taul1.ListBox1.ListIndex) For i = 0 To Taul1.ListBox2.ListCount - 1 If Taul1.ListBox2.Selected(i) Then Taul3.Cells(srow, 2).Value = _ Taul1.ListBox2.List(i) srow = srow + 1 End If Next Taul1.ListBox2.Clear listbox1_fill Taul1.CommandButton1.Visible = False Taul3.Activate End Sub
Taul2 (Sheet2) näyttäisi esim...
A B C D E 1|Laite1|Laite2|Laite3|Laite4|Laite5 2|MalliA|MalliA|MalliA|MalliA|MalliA 3|MalliB|MalliB|MalliB|MalliB|MalliB 4| |MalliC|MalliC|MalliC|MalliC 5| |MalliD| |MalliD|MalliD 6| |MalliE| | |MalliE
Taul3 (Sheet3) näyttäisi...
A B 1|Laite|Malli|
Kiitokset avusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.