Sintaksa

Pomoč pri delu z MS Excelom
Odgovori
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Sintaksa

Odgovor Napisal/-a bate »

Zdravo,
prepričan sem, da bo tole znal kdo rešiti.

Koda: Izberi vse

For Each Cell In Range("e18:au19")
    If Cell.Value.Row("18") = 3 then  Cell.interior.Bold
Next Cell
Napača je v stavku 'If', po moje tisti 'Row' !?
Pomoči bom zelo vesel in se vnaprej zahvaljujem.

lp Brane
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Re: Sintaksa

Odgovor Napisal/-a bate »

bate napisal/-a:Zdravo,
prepričan sem, da bo tole znal kdo rešiti.

Koda: Izberi vse

For Each Cell In Range("e18:au19")
    If Cell.Value.Row("18") = 3 then  Cell.interior.Bold
Next Cell
Napača je v stavku 'If', po moje tisti 'Row' !?
Za vsakršno pomoč se vnaprej zahvaljujem.

lp Brane
kljuka13
Prispevkov: 257
Pridružen: Po Sep 10, 2007 4:29 pm
Kraj: Maribor

Odgovor Napisal/-a kljuka13 »

Spet rešujem na pamet :roll:

Skratka, fino je napisati tudi, kakšno napako vrne prevajalnik.

Koda: Izberi vse

For Each Cell In Range("e18:au19")
    If Cell.Value.Row("18") = 3 Then  
       Cell.Interior.Bold = True
    End If
Next Cell
Upam, da je Cell že generirana, sicer:

Koda: Izberi vse

Dim Cell As Range
For Each Cell In Range("e18:au19")
    If Cell.Value.Row("18") = 3 Then  
       Cell.Interior.Bold = True
    End If
Next Cell
[img]http://shrani.si/f/3t/YL/4W2P37B9/office.gif[/img]
[img]http://shrani.si/f/12/aa/1rt1wj6i/1/userbardionaea.gif[/img]
[img]http://shrani.si/f/3D/nN/3RQySBCl/vista-copy.gif[/img]
admin
Site Admin
Prispevkov: 3712
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Kaj pa želite, da bi ta koda naredila?
lp,
Matjaž Prtenjak
Administrator
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
hvala za odgovore. Še ne dela. Dajem kopijo kode:

Koda: Izberi vse

...
Dim Cell As Range
...
For Each Cell In Range("e18:au18")
      [color=red]If Cell.Value.Row("18") = 3 Then[/color]
         Cell.Interior.Bold = True
      End If
Next Cell
...
Kjer se v celici vrstice <E18> pojavi vrednost <3>, mora biti izpis 'Bold'.

Napaka prevejelnika je:
<Run-time error '424'
Object required >

lp Brane
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Če bi takoj napisali bolj jasno kaj želite, bi odgovor že zdavnaj imeli. In še vedno je vaše vprašanje o oblikovanju celic dokaj nejasno. Zato sem vam napisal še nekaj dodatnih možnosti, ker se mi zdi, da boste to slej kot prej potrebovali...

Koda: Izberi vse

Sub Oznaci_krepko()

Dim Cell As Range

'...
For Each Cell In Range("e18:au18")
          'Če je pogoj izpolnjen
      If Cell.Value = 3 Then
        Cell.Font.Bold = True 'Krepka pisava
        Cell.Font.Size = 14   'Velikost pisave
        Cell.Font.ColorIndex = 3  'Barva pisave = rdeča
        Cell.Interior.ColorIndex = 5  'Barva ozadja celice = modra
       Else
            'Če pogoj ni izpolnjen
        Cell.Font.Bold = False 'Krepka pisava
        Cell.Font.Size = 10   'Velikost pisave 10 = ponavadi privzeta
        Cell.Font.ColorIndex = 0  'Barva pisave = privzeta
        Cell.Interior.ColorIndex = 0  'Barva ozadja celice = brez
    
      End If
Next Cell

End Sub
Bo to zdaj O.K. :?:
lp,

cedra
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
hvala Cedra za vaš trud. Res slabo opisujem moje probleme. Upam, da bo tokrat bolje. Tisti "Row", in sintakso sem napisal po občutku, na pamet... Ne vem niti, če beseda "Row" obstaja, če sta "3" in "1" napisani pravilno itd. Če vse skupaj obstaja, je verjetno potrebna deklaracija, pravilna sintaksa in sploh...
Poleg tega se pogoj nanaša na dve vrstici istočasno.

Koda: Izberi vse

...
For Each Cell In Range("e18:au19")
       If Cell.Value.Row("18") = 3 And _
          Cell.Value.Row("19") = 1 Then
          Cell.Font.Bold = True
       End If
 Next Cell
...
Upam, da je v primeru razvidna poanta...
Že vnaprej hvala

lp Brane
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Ups...
Spet ga lomim. Oba pogoja morata biti eden pod drugim, v isti koloni!
lp brane
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Hmm, spet ne vem koliko vrstic podatkov imate! :?
Če iščete v dveh, 18-i in 19-i vrstici, potem...

Koda: Izberi vse

...
If Cell.Value = 3 And _
          Cell.Offset(1, 0).Value = 1 Then
          Cell.Font.Bold = True
          Cell.Offset(1, 0).Font.Bold = True
       End If
...
A vedite, ko bo pisava v celici "Bold", bo "Bold" tudi ostala, kljub temu, da boste spremenili podatke tako, da pogoj ne bo več ustrezal. Torej bi bilo dobro, da vključite tisti "Else" v mojem prejšnem prispevku. Tako se bo pisava spremenila ob neizpolnjenemu pogoju nazaj v navadno!

In ne vem zakaj vam je tisti Row tako všeč, da ga na vsak način hočete imeti v kodi.:roll: V tem primeru ni potreben...
Je zdaj to to...
lp,

cedra
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
Cedra hvala za odgovor.
Podatki so v dveh [2] vrsticah kot je razvidno v vrstici "For"!. V vrstici 18 iščem številko "3", v vrstici 19 iščem številko "1". Ko sta v isti koloni, je pogoj izpolnjen in se izpišeta "Bold"!
Upam, da je kaj bolje!?

Lp Brane
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Ja dragi Brane, pa saj vam moj zadnji predlog naredi točno to?!?Kaj spet ni v redu? A ste kodo sploh preizkusili :?:
Pa tudi v tem primeru, vam ni treba iskati v obeh vrsticah, ampak samo v 18. vrstici. (E18:AU18). Makro vam bo torej v 18. vrstici iskal vrednost 3 in v vrstici pod njo, vrednost 1! Če jih najde, potem bo odebelil obe celici...
Torej...kaj spet ni v redu?
lp,

cedra
bate
Prispevkov: 127
Pridružen: Če Mar 19, 2009 10:11 am

Odgovor Napisal/-a bate »

Zdravo,
spoštovani Cedra, sporočam, da je zadeva z malo modificiranja 'zalaufala'.
Se oproščam, ker res nisem probal prvega nasveta; mi ni zgledalo, da bi bilo to, to. "Videz vara", je rekel jež in zlezel s krtače za ribanje. Srečen konec, vse dobro...

Lp Brane
Odgovori