Zavrieť

Porady

VBA zmena farby

Ahoj Poradaci. Potraboval by som poradit s excelom (VBA)
Mam dokument ktory mi pri naplneni podmienok vlozi do bunky comment. Chcel by som ale aby sa bunka aj vyfarbila - !!!!Nechcem to robit cez Conditional Formatting!!!!!. Najlepsia by bola asi funkcia, ktoru by som zapisal do vzorca. Prikladam aj dokument, v ktorom je to rozpisane blizsie. Velka vdaka vopred
Pravidlá a tipy
  • Každý móže napísať len 1 odpoveď. Neskor mozete svoju odpoveď vylepšiť.
  • Odpoveď má priniesť riešenie na otázku, vyvarujte sa hodnotenia otázky.
  • Odpoveď má byť viac o faktoch ako o názoroch.
Dalšie pravidla a tipy
    Ak potrebujete v otázke niečo upresniť, najskôr sa spýtajte na podrobnosti.
    Koncept slúži na uloženie rozpracovanej odpovede, koncept sa zobrazuje len Vám, až kým ho nezverejníte.
    Ak máte podobnú otázku, založte Novú otázku alebo Súvisiacu otázku.
    ❤ Buďte priateľskí ❤
    Sme súčasťou jednej komunity, ktorá si chce vzájomne pomáhať, rozdieľnosť je vítaná ak neubližuje!
    Usporiadať podľa času

    PaloPa je offline (nepripojený) PaloPa

    PaloPa
    Funkcia Worksheet_Change nad príslušným zošitom.
    (v príklade i vrátane pridania komentov)

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Object
    
    On Error GoTo xErr:
        For Each cell In Target
            If Not Intersect(cell, Range("B5")) Is Nothing Then
                Application.EnableEvents = False
                
                If cell.Value <> "" Then
                    cell.Interior.ColorIndex = xlNone
                    'delete comment
                    cell.Comment.Delete
                Else
                    cell.Interior.ColorIndex = 36 'zlta
                    'pridaj comment
                    If Not (cell.Comment Is Nothing) Then cell.Comment.Delete
                    cell.AddComment
                    cell.Comment.Visible = False
                    cell.Comment.Text Text:=Range("E2").Text
                   
                End If
                Application.EnableEvents = True
            End If
        Next cell
        
        Exit Sub
        
    xErr:
         Application.EnableEvents = True
    End Sub
    Palo

    PaloPa je offline (nepripojený) PaloPa

    PaloPa
    armor1 Pozri príspevok
    Ahoj PaloPa. Dakujem za rychlu odpoved. Vsimol som si ale ze vkladas koment na zaklade vlastneho makra. Nie som dobry vo VBA kodovani a aplikovat zmenu farby by som potreboval na velke mnozstvo buniek (aj 1000), preto mi toto riesenie nevyhovuje. Vkladanie ktore som mal v originalnom dokumente dalo koment ak bola splnena nejaka podmienka na zaklade funkcie. Pre vyfarbenie som doteraz pouzival Conditional Formatting. Toho by som sa ale rad zbavil, preto hladam moznost ako to spravit na rovnakom principe ako ked vkladam comment.
    Vedel by si mi vytvorit funkciu na vyfarbenie bunky ak hodnota v urcitej bunke splni podmienky? Nieco ako =if(A1>0,ChangeColor(A1,"Blue"),0)?????
    To ChangeColor(A1,"Blue") by mala byt funkcia napisana vo VBA.
    Dakujem velmi pekne za tvoju snahu a pomoc. Vdaka
    Požadovaná (i tebou už použitá) funkcia je typu UDF (user defined function). Takáto funkcia môže iba (citujem): "You can only use UDFs to return values, you can't use them for formatting or for putting values in other cells." t.j. UDF fn možno použiť iba na vrátenie hodnoty, nemožno použiť pre formátovanie, alebo na uvedenie hodnoty v iných bunkách.

    Okrem toho má Worksheet_Change výhodu, že nemusí byť naviazaná na nejaký iný vzorec, aj keď na hodnotu ktorejkoľvek sa odkazovať dá.

    Veľké mn. buniek nie je problém. Definuj si príslušný priestor ako pomenovanú oblasť a zmeň riadok fn:
    If Not Intersect(cell, Range("Moja_Oblast")) Is Nothing Then

    armor1 je offline (nepripojený) armor1

    armor1
    Ahoj PaloPa. Dakujem za rychlu odpoved. Vsimol som si ale ze vkladas koment na zaklade vlastneho makra. Nie som dobry vo VBA kodovani a aplikovat zmenu farby by som potreboval na velke mnozstvo buniek (aj 1000), preto mi toto riesenie nevyhovuje. Vkladanie ktore som mal v originalnom dokumente dalo koment ak bola splnena nejaka podmienka na zaklade funkcie. Pre vyfarbenie som doteraz pouzival Conditional Formatting. Toho by som sa ale rad zbavil, preto hladam moznost ako to spravit na rovnakom principe ako ked vkladam comment.
    Vedel by si mi vytvorit funkciu na vyfarbenie bunky ak hodnota v urcitej bunke splni podmienky? Nieco ako =if(A1>0,ChangeColor(A1,"Blue"),0)?????
    To ChangeColor(A1,"Blue") by mala byt funkcia napisana vo VBA.
    Dakujem velmi pekne za tvoju snahu a pomoc. Vdaka

    armor1 je offline (nepripojený) armor1

    armor1
    Ahoj PaloPa. Nasiel som na nete dokument s velmi podobnou funkciou ako potrebuje, ako som popisoval. Je ale trosku komplikovana:

    CellOfColor(co ma ist do bunky,IF(B3="good",farba if OK,farba if NO,do ktorej bunky) CellOfColor(A1+1,IF(B3="good",4,3),A1)
    Nevedel by si mi to zjednodusit, aby sa to spravalo len tak ze ak napr. A1 =1 tak potom v B1 by mohlo byt - =if(A1=1),CellOfColor(A1,2(color value)),0)

    Pomohol by si mi s tym
    Dakujem
    Naposledy upravil armor1 : 16.05.11 at 16:29

    PaloPa je offline (nepripojený) PaloPa

    PaloPa
    armor1 Pozri príspevok
    Ahoj PaloPa. Nasiel som na nete dokument s velmi podobnou funkciou ako potrebuje, ako som popisoval. Je ale trosku komplikovana:

    CellOfColor(co ma ist do bunky,IF(B3="good",farba if OK,farba if NO,do ktorej bunky) CellOfColor(A1+1,IF(B3="good",4,3),A1)
    Nevedel by si mi to zjednodusit, aby sa to spravalo len tak ze ak napr. A1 =1 tak potom v B1 by mohlo byt - =if(A1=1),CellOfColor(A1,2(color value)),0)

    Pomohol by si mi s tym
    Dakujem
    No priznám bez mučenia, že vôbec neviem čo myslíš. Skús sem hodiť linku na ten tvoj vzor čo si našiel.

    P.

    p.s. Viem, že si na úvod napísal, nie cez podmienené formátovanie, ale toto skoro vzorový príklad pre podm. formátovanie (čo nevylučuje VBA v pozadí, ktoré porieši iné veci)

    marjankaj je offline (nepripojený) marjankaj

    I am a man marjankaj
    PaloPa Pozri príspevok
    No priznám bez mučenia, že vôbec neviem čo myslíš. Skús sem hodiť linku na ten tvoj vzor čo si našiel.

    P.

    p.s. Viem, že si na úvod napísal, nie cez podmienené formátovanie, ale toto skoro vzorový príklad pre podm. formátovanie (čo nevylučuje VBA v pozadí, ktoré porieši iné veci)
    Pali keď to nevieš ty, čo máš krištálovú guľu, tak mu asi nikto neporadí

    Ja som skúšal tu
    http://www.porada.sk/1745874-post24.html

    armor1 je offline (nepripojený) armor1

    armor1
    V prilohe je dokument s makrom, ktore farbi.
    Je komplikovane - aspon ja si myslim.
    Chcel by som ho jednoduchsie ak sa da. Mne uz realne bezi, ale ak da, tak jednoduchsie makro by mi zrychlilo pracu.

    Preco nechcem Conditional formatting? Ak tam ludia vlozia bunky, tak zvacsa poskodia conditional formatting v bunkach a potom to uz tam nefunguje.

    marjankaj je offline (nepripojený) marjankaj

    I am a man marjankaj
    armor1 Pozri príspevok
    V prilohe je dokument s makrom, ktore farbi.
    Je komplikovane - aspon ja si myslim.
    Chcel by som ho jednoduchsie ak sa da. Mne uz realne bezi, ale ak da, tak jednoduchsie makro by mi zrychlilo pracu.

    Preco nechcem Conditional formatting? Ak tam ludia vlozia bunky, tak zvacsa poskodia conditional formatting v bunkach a potom to uz tam nefunguje.
    Pozrel si si ten môj posledný súbor?
    Teraz chceš makro a predtým si potreboval UDF?
    A ten tvoj konkrétny príklad si stále nepridal.

    armor1 je offline (nepripojený) armor1

    armor1
    Ahoj marjankaj. Jasne ze pozrel, dakujem velmi pekne. Ano je to jednoduchsie ako ten povodny, ktory som nasiel na nete.
    Len som chcel vediet, ci to nejde este jednoduchsie. Aby to nevychadzalo z toho co som nasiel na nete. Len sa zamyslam a ak by niekto vedel, neznamena to ze to bude pre mna lepsie ako to co si vytvoril ty.
    Za to ti velmi pekne dakujem a chvalim.

    Co sa tyka makra vs UDF, ja to az tak nerozlisujem a tak niekedy sa moze zdat ze hovorim to a myslim ine.

    Ak ta to pomylilo tak sa ospravedlnujem. Mne cely cas slo o UDF, pretoze to viem potom zapisat do vzorca v Exceli. Makro velmi "sam" aplikovat neviem, preto chcem UDF.

    Dakujem velmi pekne

    marjankaj je offline (nepripojený) marjankaj

    I am a man marjankaj
    armor1 Pozri príspevok
    Ahoj marjankaj. Jasne ze pozrel, dakujem velmi pekne. Ano je to jednoduchsie ako ten povodny, ktory som nasiel na nete.
    Len som chcel vediet, ci to nejde este jednoduchsie. Aby to nevychadzalo z toho co som nasiel na nete. Len sa zamyslam a ak by niekto vedel, neznamena to ze to bude pre mna lepsie ako to co si vytvoril ty.
    Za to ti velmi pekne dakujem a chvalim.

    Co sa tyka makra vs UDF, ja to az tak nerozlisujem a tak niekedy sa moze zdat ze hovorim to a myslim ine.

    Ak ta to pomylilo tak sa ospravedlnujem. Mne cely cas slo o UDF, pretoze to viem potom zapisat do vzorca v Exceli. Makro velmi "sam" aplikovat neviem, preto chcem UDF.

    Dakujem velmi pekne
    Ty čakáš, že ti niekto vymyslí to isté? A jednoduchšie?
    No keby som vedel na čo ti to bude slúžiť, tak by sa možno dalo s tým niečo urobiť. Ja si neviem predstaviť na aký účel je to dobré. Podmienené formátovanie je najjednoduchšie.

    marjankaj je offline (nepripojený) marjankaj

    I am a man marjankaj
    armor1 Pozri príspevok
    Preco nechcem Conditional formatting? Ak tam ludia vlozia bunky, tak zvacsa poskodia conditional formatting v bunkach a potom to uz tam nefunguje.
    Ak zamkneš hárok, tak nikto nebude môcť bez hesla meniť formáty. Iba ak by si to povolil.

    Porady, ktoré by vás mohli zaujímať

    Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.