Excel makro - technické řešení

Od: Datum: 17.02.16 14:44 odpovědí: 5 změna: 18.02.16 07:18

Dobrý den, potřeboval bych v označených buňkách zvýšit hodnotu o 15%, jedná se o numerický obsah buněk.

Našel jsem makro pro zvýšení hodnoty buňky o 10%:

Sub Nasobeni()
ActiveCell.Value = ActiveCell.Value * 1.1
End Sub

Jenže po aktivaci makra toto funguje pouze na aktuálně označenou jednu buňku. Existuje řešení pro více zároveň označených buněk nebo pro celý list?

Děkuji.


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 17.02.16 15:06
avatar

Activecell znamená aktivní buňka. Jestli chcete upravovat víc buněk najednou, pak potřebujete oblast Range a její deklarovanou proměnnou cell. Rozsah Range si můžete jakkoliv upravit, já jsem ho popsal pro buňky A1 až A10.

*

Option Explicit
Dim cell As Range

Sub Macro1()
For Each cell In Range("A1:A10")
cell.Value = cell.Value * 1.1
Next cell
End Sub

Ohodnoceno: 2x
 
Od: makro
Datum: 17.02.16 15:09

Ou jeee, to je přesně ono. Moc díky.

A ještě poslední věc...jak takhle v makru vyjádřím, že chci zvýšit hodnotu buňky o 13% eventuálně o 15%?

Díky, moc jste mi pomohl.

Datum: 17.02.16 15:13
avatar

cell.Value = cell.Value * 1.13

cell.Value = cell.Value * 1.15

Ohodnoceno: 3x
 
Od: makro
Datum: 17.02.16 20:36

Moc děkuji.


doplněno 17.02.16 20:55:

Možná poslední věc...když jsou mezi číselnými buňkami, kterých se makro týká, ještě buňky s textovým obsahem, kterých se makro netýká (a které makro matou), je možné, aby makro textové buňky ignorovalo a zaměřilo se pouze na buňky čistě číselné? Zkoušel jsem různě, ale fakt si s tím nevím rady. Potřebuji prostě ceny dodavatele navýšit o provizi. Manuálně bych to dělal měsíc.

Datum: 18.02.16 07:18
avatar

přidejte logickou funkci, zda je hodnota v buňce číslo. Když v buňce je číslo, pak se vynásobí indexem. Když v buňce není číslo, makro všechno uvnitř podmínky přeskočí a s buňkou nic neudělá.

*

Sub Macro2()
For Each cell In Range("A1:A10")
If IsNumeric(cell.Value) = True Then
cell.Value = cell.Value * 1.1
End If
Next cell
End Sub

Ohodnoceno: 0x
 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.