< návrat zpět

MS Excel


Téma: Kontrola nulových hodnot rss

Zaslal/a 2.9.2016 9:48

Dobrý den všem. Pro kontrolu nulových hodnot v rozpočtech jsem si vytvořil kupodivu funkční níže uvedené makro.

Sub NuloveHodnoty()
'
Range("I8").Select
ActiveCell.FormulaR1C1 = _
"=IF((ISBLANK(RC[-5])),"""",IF(RC[-2]<=0,""CHYBNÁ CENA"",""""))"
Range("I8").Select
Selection.AutoFill Destination:=Range("I8:I825"), Type:=xlFillDefault
Range("I8:I825").Select
Range("I8").Select

End Sub


Buňka I8 je buňka v prvním prázdném sloupci a na prvním textovém řádku rozpočtu. RC[-5] je označení sloupce pro měrné jednotky, RC[-2] je označení sloupce pro výsledný výpočet. Spustím-li makro, to mi označí řádky s nulovými výslednými výpočty.
Poprosím Vás o případné řešení, kdy po spuštění makra by se mi postupně měly objevit InputBoxy pro zadání těchto tří hodnot vzhledem k tomu, že každý rozpočet je jiný. Tyto zadané hodnoty by měly následně upravit makro pro správnou funkci toho kterého rozpočtu.
Předem děkuji a omlouvám se. VBA neumím a vzhledem k věku se asi už ani nenaučím 7

Zaslat odpověď >

Strana:  « předchozí  1 2
#032677
avatar
OK, poslední pokus. Pokaždé píšeš trochu něco jiného ;-)...

1.) Makro tedy umožní uživateli nastavit číslo sloupce s měrnými jednotkami, číslo sloupce s kontrolovanou cenou a číslo prvního kontrolovaného řádku.
2.) Dále bude od příslušného řádku kontrolovat, zda jsou zadány měrné jednotky, pokud ano, tak zkontroluje i správné zadání ceny (nezáporná, nenulová).
3.) Pokud bude cena ve špatném tvaru, tak umožní uživateli opravu hodnoty - InputBox nepůjde vypnout, dokud nebude hodnota správná.
4.) V tomto případě pak již nemusím nikam zapisovat, že se jedná o chybu, protože bude vždy opraveno...
P.

Možné řešení makrem:
Sub Kontrola_cen()
Dim sloupec_s_MJ As Integer
Dim sloupec_s_cenou As Integer
Dim prvni_radek_kontroly As Integer
Dim i As Long
Dim msg As Byte

sloupec_s_MJ = InputBox("Zadejte číslo sloupce s měrnými jednotkami:", "Nastavení makra")
sloupec_s_cenou = InputBox("Zadejte číslo sloupce s kontrolovanou cenou:", "Nastavení makra")
prvni_radek_kontroly = InputBox("Zadejte číslo prvního kontrolovaného řádku:", "Nastavení makra")

For i = prvni_radek_kontroly To 10000
If (Cells(i, sloupec_s_MJ) <> "") And (Cells(i, sloupec_s_cenou) <= 0) Then
Cells(i, sloupec_s_cenou).Select
Do Until Cells(i, sloupec_s_cenou).Value > 0
Cells(i, sloupec_s_cenou).Value = InputBox("Opravte hodnotu v buňce: " & Cells(i, sloupec_s_cenou).Address & "!", "Upozornění")
Loop
End If
Next i

msg = MsgBox("Všechny záznamy byly zkontrolovány a případně opraveny!", vbInformation)

End Sub
citovat
#032694
avatar
Takže. Jestli píšu pokaždé něco jiného tak se moc omlouvám. Od samého začátku přesně vím co chci, jenom to asi neumím dostatečně srozumitelně vysvětlit. Njn, je mi přes 60.
Je to skvělá paráda. Už to funguje perfektně, takhle jsem si to představoval. Skláním se před tvým uměním 1 . Pouze bych poprosil o upravení InputBoxu pro opravu hodnoty. Ve výjimečných případech bude nutné v některém řádku ponechat nulu. InputBox mě v tomto okamžiku nepustí dále a tlačítko Storno nefunguje. Takže moc prosím o možnost zadat i nulu a možnost ukončit kontrolu tlačítkem Storno v InputBoxu.
Velice moc moc děkuji, tvoje skvělé řešení mi bude moc pomáhat.citovat
#032700
avatar
V pohodě, upravené:
Sub Kontrola_cen()
Dim sloupec_s_MJ As Integer
Dim sloupec_s_cenou As Integer
Dim prvni_radek_kontroly As Integer
Dim kontrolni_hodnota As String
Dim defaultni_hodnota_inputboxu As String
Dim i As Long
Dim msg As Byte

On Error Resume Next
sloupec_s_MJ = InputBox("Zadejte číslo sloupce s měrnými jednotkami:", "Nastavení makra")
sloupec_s_cenou = InputBox("Zadejte číslo sloupce s kontrolovanou cenou:", "Nastavení makra")
prvni_radek_kontroly = InputBox("Zadejte číslo prvního kontrolovaného řádku:", "Nastavení makra")

For i = prvni_radek_kontroly To 10000
If (Cells(i, sloupec_s_MJ) <> "") And (Cells(i, sloupec_s_cenou) <= 0) Then
Cells(i, sloupec_s_cenou).Select
If Cells(i, sloupec_s_cenou) = "" Then
defaultni_hodnota_inputboxu = "---"
Else
defaultni_hodnota_inputboxu = Cells(i, sloupec_s_cenou).Value
End If

kontrolni_hodnota = InputBox("Opravte hodnotu v buňce: " & Cells(i, sloupec_s_cenou).Address & "!", "Upozornění", defaultni_hodnota_inputboxu)
If kontrolni_hodnota = "---" Then
Exit Sub
Else
Cells(i, sloupec_s_cenou).Value = kontrolni_hodnota
End If
End If
Next i

msg = MsgBox("Všechny záznamy byly zkontrolovány a případně opraveny!", vbInformation)

End Sub
Udělal jsem to tak, že pokud se klikne na "Cancel" při opravě buněk, tak makro přejde k další kontrolované buňce. Pokud se potvrdí tlačítkem "OK" nastavená defaultní hodnota "---", tak se makro okamžitě ukončí.
P.citovat
#032728
avatar
Skvělý. Už to funguje tak jak jsem si představoval. Velice moc děkuji za vyřešení a taky za tvůj čas. 1citovat

Strana:  « předchozí  1 2

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