Přejít na obsah
  • Aktuální cíle darů

Excel vzorce VBA - help


Guest Raubiri

Recommended Posts

Zdravím, neměl by někdo ponětí jak upravit následující vzorce, tak, aby se vybrala vždy jedna správná varianta a podle toho to fungovalo? Zatím to nefunguje. Dík za rady :-)

If Cells(1, 18) >= 10 & Cells(1, 18) < 100 & Cells(1, 19) >= 10000 & Cells(1, 19) < 99999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 10 & Cells(1, 18) < 100 & Cells(1, 19) >= 100000 & Cells(1, 19) < 999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 10 & Cells(1, 18) < 100 & Cells(1, 19) >= 1000000 & Cells(1, 19) < 9999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 & Cells(1, 18) < 1000 & Cells(1, 19) >= 10000 & Cells(1, 19) < 99999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 & Cells(1, 18) < 1000 & Cells(1, 19) >= 100000 & Cells(1, 19) < 999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 & Cells(1, 18) < 1000 & Cells(1, 19) >= 1000000 & Cells(1, 19) < 9999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

Odkaz ke komentáři
Sdílet na ostatní stránky

Napriklad (pro SHEET1)

---------------------------------------------------------

With Sheet1

If _

.Cells(1, 18) >= 10 And .Cells(1, 18) < 100 And .Cells(1, 19) >= 10000 And .Cells(1, 19) < 99999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

If _

.Cells(1, 18) >= 10 And .Cells(1, 18) < 100 And .Cells(1, 19) >= 100000 And .Cells(1, 19) < 999999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

If _

.Cells(1, 18) >= 10 And .Cells(1, 18) < 100 And .Cells(1, 19) >= 1000000 And .Cells(1, 19) < 9999999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

If _

.Cells(1, 18) >= 100 And .Cells(1, 18) < 1000 And .Cells(1, 19) >= 10000 And .Cells(1, 19) < 99999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

If _

.Cells(1, 18) >= 100 & .Cells(1, 18) < 1000 And .Cells(1, 19) >= 100000 & .Cells(1, 19) < 999999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

If _

.Cells(1, 18) >= 100 & .Cells(1, 18) < 1000 And .Cells(1, 19) >= 1000000 & .Cells(1, 19) < 9999999.99 Then

.Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & .Range(\"R1\").value & \"\"

.Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

End With

---------------------------------------------------

Ale zatim mi to v Excelu hlasi chybu, to proto, ze tam nemam definici promenne \"i\" a \"n\" a nejspis jeste neceho dalsiho .... Ten zapis \"i + radek + 1\" je nejaky divny, chtelo by to, abys napsal, co presne to ma delat a kam presne Ti to ma vyhazovat Ty hodnoty.

[upravil dne 12/12/12 09:20 od StibTo]

Odkaz ke komentáři
Sdílet na ostatní stránky

Udělal jsem...

a buď mi to teda nesplňuje podmínky...nebo je někde zakopanej pes, ale nefunguje to...

If Cells(1, 18) >= 10 And Cells(1, 18) < 100 And Cells(1, 19) >= 10000 And Cells(1, 19) < 99999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 10 And Cells(1, 18) < 100 And Cells(1, 19) >= 100000 And Cells(1, 19) < 999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 10 And Cells(1, 18) < 100 And Cells(1, 19) >= 1000000 And Cells(1, 19) < 9999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 And Cells(1, 18) < 1000 And Cells(1, 19) >= 10000 And Cells(1, 19) < 99999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 0000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 And Cells(1, 18) < 1000 And Cells(1, 19) >= 100000 And Cells(1, 19) < 999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 000000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

Else

End If

If Cells(1, 18) >= 100 And Cells(1, 18) < 1000 And Cells(1, 19) >= 1000000 And Cells(1, 19) < 9999999.99 Then

Cells(i + radek, \"Q\") = \"S1:000\" & n & \" 00000\" & Range(\"R1\") & \"\"

Cells(i + radek + 1, \"Q\") = \"S3:00000 000000000000\"

End If

Nevím jestli ten rozsah nejde udělat nějak pro excel srozumitelněji...

Odkaz ke komentáři
Sdílet na ostatní stránky

Ty tecky jsou tam misto toho abych psal \"Sheet1.cells(1,18) = ...\" ..... Takze na zacatek hodis \"With Sheet1\" a na konec \"End With\".

Pouzivam to hlavne proto abych mel jistotu ze se makro spusti pouze v te konkretni zalozce a ne kdekoliv jinde :)

Mrknu na Tvuj email.....

Odkaz ke komentáři
Sdílet na ostatní stránky

No nevadí :)

je to psané prasácky...to vím..naštěstí to z velké většiny tvořil bejvalej kolega, kterej byl prase sám o sobě...a tak sem se snažil to aspoň upravit tak, aby to bylo použitelný...ale zdá se, že to raději vytvořím znovu...bude to nejspíš i úspora času:)

a to už tam půlka není :)

Jen se tedy zeptám, jsi očividně šikovnější....

Když chci aby to porovnalo dvě podmínky... tak začínám if...podmínka...then co má udělat a potom else? End if

Nebo se tam dá dát místo else jiný operátor který by posunul v případě nesplnění podmínky na další podmínku?

Každopádně dík za ochotu :super

Edit:

pokud mě to ale nasere..tak tam nechám jen aby to doplňovalo a budu to pak upravovat ručně :) Co bych se s tím rozčiloval :-D

[Edited on 12/12/12 09:03 by Raubiri]

Odkaz ke komentáři
Sdílet na ostatní stránky

Da se to nekonecne vrstvit .....

Treba :

Kdyz policko A1 (cells(1,1) NENI prazdne (Not IsEmpty) potom pokud je hodnota v policku A1 mensi nez 10 a zaroven hodnota policka A2 je slovo YES pak Excel \"pozdravi\" \"Dobry den\", pokud tomu tak neni overuje dalsi podminku, pokud ani ta nevyjde pozdravi \"Dobre poledne :)

If Not IsEmpty(Sheet1.cells(1,1)) then

If sheet1.cells(1,1) < 10 And sheet1.cells(2,1) = \"YES\" then

Msgbox \"Dobry den\"

ElseIf sheet1.Cells(1,1) < 10 And sheet1.cells(2,1) = \"NO\" then

Msgbox \"Nashledanou\"

Else

Msgbox \"Dobre poledne\"

End if

End if

Odkaz ke komentáři
Sdílet na ostatní stránky

Z vlastni zkusenosti muzu poradit spis tu moznost ze to cely smazes a napises si to znovu a sam :) Nez rozebirat prasackej kod nekoho jinyho a snazit se ho pochopit.

A mimochodem jeste prehlednejsi zapis ma VBA funkce \"Select Case\"

Odkaz ke komentáři
Sdílet na ostatní stránky

no možná už vím kde tam mám chybičku...každopádně to přepíšu od začátku.

Jinak jsem koukal na to druhé vlákno a tam je též spoustu zajímavých informací :-) tak jak bude čas, tak to začnu študovat.

Díky za nakopnutí správným směrem :):super

Pak dám vědět, zda se podařilo, případně sem dám celý kód :) třeba to pak pomůže někomu dalšímu :)

Odkaz ke komentáři
Sdílet na ostatní stránky

Zúčastnit se diskuse

Můžete odpovědět a až poté se registrovat If you have an account, sign in now to post with your account.

Návštěvník
Odpovědět na toto téma...

×   Byl vložen obsah s formátováním.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Kdo si právě prohlíží tuto stránku   0 registrovaných uživatelů

    • Žádný registrovaný uživatel si neprohlíží tuto stránku
×
×
  • Vytvořit...