Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: TextBox ja option button

jannu [18.02.2009 12:39:41]

#

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.

neau33 [18.02.2009 21:46:21]

#

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|

jannu [19.02.2009 09:30:19]

#

Kiitokset avusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta