více podmínek IF Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

m.niki
Level 1
Level 1
Příspěvky: 60
Registrován: červenec 10
Pohlaví: Muž
Stav:
Offline

více podmínek IF

Příspěvekod m.niki » 04 říj 2010 20:55

Dobrý den, potřeboval bych poradit, jak opravit níže uvedený kód aby fungoval... cílem je aby podmínka pro IF byl asplněna, když se aktivní buňka bude c 16, c 32, c 48, .... 288 (tady jsem kód trochu zkrátil), zlobí mě tam nějak to And a Or, zkoušel jsem dát závorky, ale nepomohly, výsledek je, že se podmínka spustí když kliknu kamkoliv do sloupce C nebo řádků 16,32,48.... takže mě to vlastně vytvoří takovou aktivní mříž :)

Kód: Vybrat vše

If (ActiveCell.Column = 3 And ActiveCell.Row = 16) Or _
   (ActiveCell.Column = 3 And ActiveCell.Row = 32) Or _
   (ActiveCell.Column = 3 And ActiveCell.Row = 48) Or _
   (ActiveCell.Column = 3 And ActiveCell.Row = 64)  Then


znáte někdo řešení? díky moc

Reklama
Uživatelský avatar
Sender
Level 3.5
Level 3.5
Příspěvky: 700
Registrován: leden 07
Bydliště: Vysočina
Pohlaví: Muž
Stav:
Offline

Re: více podmínek IF

Příspěvekod Sender » 04 říj 2010 22:57

V Pascalu bych to napsal takhle:

Kód: Vybrat vše

If ActiveCell.Column =3 then
case ActiveCell.Row of
  16,32,48,64:begin
                      //nějakej kód
                     end;
end;

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: více podmínek IF

Příspěvekod navstevnik » 04 říj 2010 23:16

Nize je modelova procedura testujici adresu aktivni bunky, uprav pro svou potrebu, radek je neperiodicky:

Kód: Vybrat vše

Sub TestAdresyAktivniBunky()
  Dim OK As Boolean
  OK = False
  With ActiveCell
    If .Column = 3 Then ' sloupec
      Select Case .Row
        Case 16, 30, 40, 64 ' radek
          OK = True
      End Select
    End If
    If OK Then
      ' nejaka procedura
      Debug.Print "Bunka na radku " & .Row
    End If
  End With
End Sub

Pro periodicke cislo radku napr. takto:

Kód: Vybrat vše

Option Explicit

Sub TestAdresyAktivniBunky()
  With ActiveCell
    If .Column = 3 Then ' sloupec
      If .Row Mod 16 = 0 Then ' radek
      ' nejaka procedura
      Debug.Print "Bunka na radku " & .Row
      End If
    End If
  End With
End Sub

m.niki
Level 1
Level 1
Příspěvky: 60
Registrován: červenec 10
Pohlaví: Muž
Stav:
Offline

Re: více podmínek IF

Příspěvekod m.niki » 05 říj 2010 17:01

navstevniku asi se někde stala chybička, nějak to nemůžu rozchodit, ani jeden kód nereaguje na žádné buňce, zkoušel jsem to i v novým souboru a nic.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: více podmínek IF

Příspěvekod navstevnik » 05 říj 2010 17:40

Uvedene procedury jsou jen modelove pro test adresy aktivni bunky misto nekonecne rady podminek, umisteny ve standardnim modulu (jedna nebo druha, jinak nutno upravit nazev).
Po spusteni v editoru VBA (F5) testuji, zda aktivni bunka (na aktivnim listu) ma adresu ve sloupci C:C a radku 16, (32,48,...) nic vic, nic min.
Pro konkretni reseni musis dodat konkretni proceduru (nejlepe i se sesitem), ve ktere ma test probehnout.

m.niki
Level 1
Level 1
Příspěvky: 60
Registrován: červenec 10
Pohlaví: Muž
Stav:
Offline

Re: více podmínek IF

Příspěvekod m.niki » 05 říj 2010 18:06

já jsem si do toho při zkoušení doplnil procedury, ale nijak to nereagovalo, pak jsem si všiml rozdílu mezi původním kódem,myslel jsem, že jde o větu v závorce za názvem kódu, při kopírování jsem zkopíroval celý řádek s názvem a fungovalo to, když jsem chtěl název změnit, tak to fungovat přestalo.

Kód: Vybrat vše

Sub Worksheet_SelectionChange(ByVal target As Range)

With ActiveCell
If .Column = 3 Then
     If .Row Mod 16 = 0 And .Row > 30 And .Row < 289 Then
   
    .Offset(0, 2).Value = .Offset(-16, 2) + 1
   
    End If
End If
End With
End Sub

pokud v názvu udělám jakoukoliv změnu, tak to nefunguje, nevíš proč? ono vlastně o nic nejde, klidně se funkce může jmenovat takto, jen bych to chtěl pochopit. Jinak děkuji za elegantní řešení podmínky, hned kód vypadá lépe .

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: více podmínek IF  Vyřešeno

Příspěvekod navstevnik » 05 říj 2010 18:24

Procedura "pracuje" s vybranou bunkou - Target:

Kód: Vybrat vše

Option Explicit


Sub Worksheet_SelectionChange(ByVal Target As Range)

  With Target
    If .Column = 3 Then
      If .Row Mod 16 = 0 And .Row > 30 And .Row < 289 Then
        .Offset(0, 2).Value = .Offset(-16, 2) + 1
      End If
    End If
  End With
End Sub


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jak přidám více monitorů do mini Windows PC.
    od holatir427 » 06 lis 2023 13:59 » v Problémy s hardwarem
    8
    1449
    od mmmartin Zobrazit poslední příspěvek
    04 led 2024 11:27
  • Tisk více excel souborů najednou.
    od Myerina » 17 dub 2024 17:42 » v Kancelářské balíky
    2
    867
    od Myerina Zobrazit poslední příspěvek
    20 dub 2024 11:36
  • 144hz monitor nefunguje na více než 120hz Příloha(y)
    od fakeyn » 11 kvě 2023 21:37 » v Problémy s hardwarem
    1
    903
    od kecalek Zobrazit poslední příspěvek
    12 kvě 2023 12:30
  • excel text na konec více řádků najednou Příloha(y)
    od Myerina » 03 led 2024 11:51 » v Kancelářské balíky
    5
    1028
    od Zivan Zobrazit poslední příspěvek
    04 led 2024 09:42
  • Prodám zcela nový - MegaRAID 9361-24i 4 GB - více kusů
    od Pepe3340 » 17 dub 2024 08:39 » v P: Vše ostatní
    0
    632
    od Pepe3340 Zobrazit poslední příspěvek
    17 dub 2024 08:39

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Majestic-12 [Bot] a 27 hostů