Stránka 1 z 1

Excel VBA - Worksheets Change

Napsal: 24 zář 2010 14:47
od Branscombe
Ahoj všem a hlavně návštěvníkovi,

mám problém s automatickou aktualizací listboxů. Potřebuji makro které mi při každé změně buňky "C3" na listu "Main" zaktualizuje listbox "B".
Ve výsledku by to mělo fungovat tak že když vyberu v listboxu název třeba "Višeň", zobrazí se hodnoty v listboxu vedle (P,Q,R,S,T) - dle zdroje na listu "Source".

Myslíte že by to šlo nějak naprogamovat ??

Díky předem ...

Re: Excel VBA - Worksheets Change

Napsal: 24 zář 2010 16:16
od navstevnik
Reseni muze byt nasledujici:
Vyber v listbox nevyvola udalost. Takze je potreba vlozit na list Main do vhodne bunky napr. H2 funkci =NÁHČÍSLO() nebo =DNES(), ktera je pri zmenach na listu volana a pak pouzit udalost Worksheet_Calculate.
Na listu Source jsou vytvoreny pojmenovane oblasti (nazev): Jabloň =Source!$D$2:$D$7 a dalsi. Muzes take pouzit dynamicke pojmenovane oblasti vice viz http://www.officir.ic.cz/chipex04/03/ex ... avani.html

V udalostni procedure vlozene do modulu listu Main:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Calculate()
  With Me
    If .Range("c3").Value <> .Range("i2").Value Then ' je zmena v C3?
      Application.EnableEvents = False
      .Range("i2").Value = .Range("c3").Value ' ulozit novou hodnotu z C3
      .B.ListFillRange = .Range("c3").Value ' vlozit doB.ListFillRange odkaz
      Application.EnableEvents = True
    End If
  End With
End Sub

je vkladana do vlastnosti listboxu B.ListFillRange hodnota z C3. Aby nedochazelo ke zbytecnemu vkladani hodnoty , je testovana zmena obsahu C3 oproti ulozene hodnote v pomocne bunce, zvolil jsem Main!I2.

PS.: Vsechny jine procedury jsem pri overovani deaktivoval, takze je budes muset pripadne prizpusobit, aby nekolidovaly s uvedenym resenim.

Re: Excel VBA - Worksheets Change

Napsal: 24 zář 2010 21:58
od Branscombe
Super, díky moc za pomoc ... Odzkouším, popřípadě upravím ... Ještě jednou díky ...