Stránka 1 z 1

změna rowsource u comboboxu při načtení formuláře  Vyřešeno

Napsal: 29 led 2011 23:34
od m.niki
Zdravím všechny, mám problém s vlastností Rowsource u comboboxu, potřebuji, aby jeho obsahem byly položky nacházejí se o 8 sloupců vlevo od textu OK, vyhledávaného v oblasti J2:J2000, zkoušel jsem různě ale marně, až mě napadá, jestli zdrojem vůbec může být nespojitá oblast.

Kód: Vybrat vše

Private Sub UserForm_Initialize()
Dim aa22 As Worksheet
Dim aa22aa, aa22bb, aa22cc,a2 As Range

Set aa22 = Worksheets("odběratelé")

Set aa22aa = aa22.Range("j2:j2000")

For Each a2 In aa22aa
    If a2.value = "OK" Then
    On Error GoTo prvni
    Set aa22bb = Union(aa22bb, a2)
    GoTo dalsi
prvni:
    Set aa22bb = a2
dalsi:
   
    End If
Next a2
aa22cc = aa22bb.Offset(0, -8)

vyber.RowSource = aa22cc

End Sub


nevíte jak na to?

Re: změna rowsource u comboboxu při načtení formuláře

Napsal: 30 led 2011 09:02
od navstevnik
Ve VBA odkaz ve vlastnosti UserForm1.Combobox1.RowSource musi odkazovat na souvislou oblast v jednom sloupci, jinak chyba "RunTime error 380: Could not set the RowSorce property. Invalid property value."
Konstrukce kodu VBA:
- odkazem je pojmenovana oblast RSource - staticka nebo dynamicka:

Kód: Vybrat vše

...
  With UserForm1
    .ComboBox1.RowSource = "RSource"
    ...
  End With
...

- odkazem je definovana oblast na zadanem listu:

Kód: Vybrat vše

...
  Dim aaa As Range
...
  ' definovat souvislou oblast aaa ve sloupci
...
  With UserForm1
     ' nazev listu & adresa bloku
    .ComboBox1.RowSource = "list1!" & aaa.Address
    ...
  End With
...

Ps.: pokus zadat do vlastnosti RowSource primo nespojitou oblast List1!A1:A10;List1!A20:A30 skonci nejspis padem editoru VBA

Re: změna rowsource u comboboxu při načtení formuláře

Napsal: 30 led 2011 11:54
od m.niki
díky za vysvětlení návštěvníku, zkusím při načtení UserForm položky seřadit podle sloupce J, pak by měla být oblast souvislá, uvidím jak to dopadne

Re: změna rowsource u comboboxu při načtení formuláře

Napsal: 30 led 2011 14:09
od navstevnik
Jeste muzes pouzit tuto konstrukci:

Kód: Vybrat vše

...
Dim Wsht As Worksheet
Dim Blk As Range
...
Set Wsht = ActiveWorkbook.Worksheets("list1")
...
Set Blk = Wsht.Range("a1:a10")
With UserForm1
.ComboBox1.RowSource = Blk.Parent.Name & "!" & Blk.Address
...
End With
...