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 SubTaul1 (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 SubTaul2 (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.