< návrat zpět

MS Excel


Téma: Podmienka IF vo VBA rss

Zaslal/a icon 28.4.2013 3:12

vo vzorci (na liste) môžem napísať:
= KDYŽ(NEBO(OverviewTypeOfData={2;3});"PLATI";"NEPLATI")

je možné analogické použitie maticovej konštanty pre vyhodnotenie podmienky vo VBA, aby som to nemusel zapisovať ako:
If [OverviewTypeOfData] = 2 Or [OverviewTypeOfData] = 3 Then
...kód
[Else]
[...kód]

End If
? Proste, pokiaľ má konštanta viacero členov, dá sa to v rámci VBA zapísať nejako jednoduchšie než cez If v ktorom je to spojené cez Or alebo cez Select Case? Skúšal som If WorksheetFunction.Or([OverviewTypeOfData] = 2, 3) Thenale takto to (pochopiteľne) nefunguje, zložené zátvorky to neberie, asi by to chcelo vložiť za = nejaké pole, na to sa práve pýtam, či to nejak ide...
OverviewTypeOfData je pomenovaná oblasť (jedna bunka)

Prostredníctvom Select Case by to vyzeralo takto:Sub MojeMakro()
Select Case [OverviewTypeOfData]
Case 2, 3
..kód
Case Else
[...kód]
End Select
End Sub
To je samozrejme spôsob, ktorý mi je známy, chcel by som vedieť, či existuje ešte niečo jednoduchšie, asi blbosť, čo?

Zaslat odpověď >

icon #013140
eLCHa
To je samozrejme spôsob, ktorý mi je známy, chcel by som vedieť, či existuje ešte niečo jednoduchšie, asi blbosť, čo?

Mno, jak to říct. V podstatě jste si odpověděl sám ;))

Jednou s výhod BASICu je právě SELECT CASE a buďme rádi za něj. V jiných jazycích samozřejmě existuje taky, ale obvykle nelze použít <, >, <=, >=, IS atp. Ikdyž je pravda, že pokud dělám ve Visual Studiu, dělám v C#.

Jestli
=KDYŽ(NEBO(OverviewTypeOfData={2;3});"PLATI";"NEPLATI")
funguje, tak proto, že je maticový a to VBA a IF není. (mně nefunguje ;)), ale testoval jsem jen krátce)

Ono je taky dobré vědět, k čemu to potřebujete. To co jste napsal jednoznačně řeší SELECT CASE. Dalo by se to vyřešit např. i řetězcovou konstantou a INSTR (např. se to využije při odstranění diakritiky - http://social.technet.microsoft.com/Forums/cs-CZ/officecs/thread/781c8e74-f545-41bc-a799-bc71940d52a3/ - někde mám i svou proceduru, ale rychlejší bylo najít jí na netu). Záleží, co chcete dělat ;)citovat
icon #013141
avatar
eLCHa, on ten vzorec maticový nie je, ale je v ňom maticová konštanta, to áno.

Vo VBA to potrebujem pre vyhodnotenie podmienky - ale je to v podstate akademický problém: jedná o to, že sa mi stáva, že napíšem jednoduchý kód If...Then...Else...End If, kde za If je skutočne len nejaká podmienka typu A=1. Potom ale zistím, že potrebujem aby sa časť PRAVDA realizovala i v prípade, že A=2, alebo A=3 a som lenivý to prepísať do podoby Select Case a syntax
If A=1 Or A=2 Or A=3 Then... nemusí byť úplne prehľadná, takže hľadám niečo, čo som sa snažil naznačiť prostredníctvom tej analógie s funkciou vo vzorci.
Ale asi nič jednoduchšie, než Select Case, neexistuje, chcel som si to len s niekým overiť, takže ďakujem za konzultáciu.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje