armor1
10.05.11,19:23
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:)
PaloPa
11.05.11,06:09
Funkcia Worksheet_Change nad príslušným zošitom.
(v príklade i vrátane pridania komentov)


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
armor1
11.05.11,10:55
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
PaloPa
11.05.11,14:02
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
16.05.11,14:16
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
PaloPa
23.05.11,11:26
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
23.05.11,11:48
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í:rolleyes:

Ja som skúšal tu:confused:
http://www.porada.sk/1745874-post24.html
armor1
23.05.11,12:10
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
23.05.11,12:50
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
23.05.11,13:40
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
23.05.11,13:45
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?:confused:
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
23.05.11,14:49
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.:cool: