Stránka 1 z 1

Dynamická změna oblasti pro Listbox

Napsal: 11 čer 2009 21:44
od Branscombe
Zdravím,
prošel jsem celý internet, ale nikde sem nenalezl odpověď na mou otázku jak vložit proměnou do "ListfillRange" pro listbox.
Přes ovládací prvky si vytvořím seznam (ListBox1) a potřebuji mu přiřadit aby v seznamu byli buňky B1:Bxx ... Nevím kolik bude těch buňek, bude to pokaždé jiné, takže potřebuji vložit proměnou ale nevím jak... :-(
U seznamu z prvků formulářu to vím, ale ne u Ovládacích prvků. :-/
Můžete mi prosím poradit ??
Díky předem

Re: Dynamická změna oblasti pro Listbox  Vyřešeno

Napsal: 12 čer 2009 00:19
od mike007
Jistě se to dá udělat více způsoby. Osobně bych si pomohl událostní procedurou:

Klikni pravým tlačítkem myši na název záložky a z kontextového menu vyber možnost Zobrazit kód (View Code)
Tímto otevřeš VBA. Do bílého okna napravo zapiš tuto událostní proceduru:


Private Sub worksheet_change(ByVal target As Range)
With target
If .Column = 2 Then
With Sheet1
.ListBox1.List = .Range("b1", .Cells(.Rows.Count, "B").End(xlUp)).Value
End With
End If
End With
End Sub


Do ThisWorkBook vlož toto:

Private Sub workbook_open()
On Error Resume Next
With Sheet1
.ListBox1.List = .Range("B1", .Cells(.Rows.Count, "B").End(xlUp)).Value
End With
On Error GoTo 0
End Sub


Ukázka v příloze.

Re: Dynamická změna oblasti pro Listbox

Napsal: 12 čer 2009 05:50
od Branscombe
Díky moc, jsi borec !!

Re: Dynamická změna oblasti pro Listbox

Napsal: 12 čer 2009 07:13
od mike007
jj, není zač.

Re: Dynamická změna oblasti pro Listbox

Napsal: 11 bře 2010 16:05
od Branscombe
Trošku tápu, jak zapsat VBA kód když chci mít zdroj na jednom listu a listbox na druhém ?? Poradí někdo ??

Re: Dynamická změna oblasti pro Listbox

Napsal: 11 bře 2010 18:59
od navstevnik
ListBox je na prvnim listu, tabulka na druhem:
Do modulu Tento_sesit vloz proceduru:

Kód: Vybrat vše

Option Explicit

Private Sub Workbook_Open()
  On Error Resume Next
  With Worksheets("list2")
    Worksheets("list1").ListBox1.List = .Range("B1", .Cells(.Rows.Count, "B").End(xlUp)).Value
  End With
  On Error GoTo 0
End Sub

a do modulu listu2:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Column = 2 Then
      With Worksheets("list2")
        Worksheets("list1").ListBox1.List = .Range("b1", .Cells(.Rows.Count, "B").End(xlUp)).Value
      End With
    End If
  End With
End Sub