Stránka 1 z 1

EXCEL: vnořená funkce pro vyvolání makra

Napsal: 15 zář 2010 00:34
od woyen
Dobrý den,

řeším problém, jak do funkce KDYŽ vnořit funkci pro vyvolání makra.

Konkrétně nyní mám složenou funkci založenou na SVYHLEDAT a KDYŽ, která z několika listů po x operacích nakonec naplní hodnoty do daného pole. SVYHLEDAT přiřazuje z oblastí s nenulovými hodnotami, a když nenajde, háže N/A, které je ošetřeno funkcí KDYŽ, aby v takovém případě dosazovalo 0. Tuto 0 bych potřeboval nahradit prázdným políčkem šedé barvy. Jako laický uživatel tipuju, že se bude jednat o nějakou funkci Call pro vyvolání makra, které zašediví buňku, vnořenou do funkce KDYŽ namísto té nuly. Bohužel neumím ve VBA, abych funkci call udělal a vnořil jí.

Poradí někdo? Díky za odpovědi.

VS

Re: EXCEL: vnořená funkce pro vyvolání makra

Napsal: 15 zář 2010 01:29
od navstevnik
Postaci moznosti listu, pouzij podminene formatovani, podminka vzorec: hodnota v bunce je 0 (=A1=0), nastav barvu pisma a pozadi na pozadovanou barvu.

Doplneno: 15.9.10
V podminenem formatu pro napr. bunku C3 pouzij vzorec: =A(C3=0;JE.ČISLO(C3)); vraci-li v bunce C3 vlozena funkce hodnotu 0, je podminka splnena - PRAVDA, jinak NEPRAVDA

Re: EXCEL: vnořená funkce pro vyvolání makra

Napsal: 15 zář 2010 10:40
od woyen
Přes podmíněné formátování to nyní řeším, ale to zase způsobuje problémy v dalších operacích s dokumentem.

Re: EXCEL: vnořená funkce pro vyvolání makra

Napsal: 15 zář 2010 11:35
od navstevnik
Zmena funkcni hodnoty v bunce vlozene funkce nevyvola udalost.
Obecne lze pouzit zmenu v bunce, na kterou ona vlozena funkce odkazuje, k vyvolani udalosti, tedy zmena v bunce, ktera spousti tu slozenou funkci SVYHLEDAT(...).
Priklad (vzhledem k obecnemu uvedeni pozadavku obecne): Zmena v bunce A1 vyvola zmenu funkcni hodnoty v C6. Udalostni procedura pak upravi v bunce C6 barvu pozadi v zavislosti na vysledne funkcni hodnote.
V editoru VBA (Alt+F11) vloz do modulu prislusneho listu (kde mas v C6 funkci vracejici ciselnou hodnotu):

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$A$1" Then
    With Me.Range("c6")
      If .Value = 0 Then
        .Interior.ColorIndex = 15
      Else
        .Interior.ColorIndex = xlNone
      End If
    End With
  End If
End Sub


ja na VBA? Zacni treba zde: http://www.officir.ic.cz/excelentne.html