Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-bunky » zapis-udaj-do-bunky-excel-vba

Excel VBA - zapiš údaj do buňky

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak zapisovat do buněk Excelu pomocí maker (VBA kódy) hodnoty, čísla, texty. Praktické příklady.

Úvodem

Microsoft Excel 2010 VBA - logo

Jak z buňky přečíst nějaký údaj (hodnotu, datum, čas, ...) předpokládám, že zvládáte z předchozího článku. V následujících příkladech představuji praktické ukázky jak údaje do buněk zapisovat:


Zadat text do buňky

Začneme tradičním úkolem. Do buňky A1 pomocí VBA makro zapíše text "Ahoj světe."

Sub Zapis() Cells(1, 1) = "Ahoj světe." End Sub

nebo pomocí Range

Range("A1") = "Ahoj světe."

Zadat údaj do buňky

Jak víte z přečtení údaje z buňky. Podle požadované vlastnosti se vypíše co potřebujete, stejně tak to funguje u zápisu.

  • Value -
  • Value2 -
  • Text - tuto vlastnost nelze využít pro zípis, jen pro čtení
  • Formula* - zapsat vzorec různými způsoby (R1C1/A1), v angličtině nebo v lokální reči (češtině), případně jako maticový (spíše využití u zápisu) - viz samostatná kapitola

Ukázky zápisu

Range("B5") = "10.10.2016" Range("B5").Value = "10.10.2016" Range("B5").Value2 = 42653 ' nelze zapsat ' Range("B5").Text = "text" Range("B5").Formula = "=Today()" Range("B5").FormulaLocal = "=DNES()" Range("B5").FormulaR1C1 = "=Today()" Range("B5").FormulaR1C1Local = "=DNES()" ' poznámka pro pokročilejší: Range("A1:C5").FormulaArray = "=3"

Odkázat se na buňku:

Poznámka: Předpokládám, že znáte a není třeba vysvětlovat.16:02 30.11.2018

Range("B2") Cells(2, 2) [B2]

Zapiš aktuální řádek a sloupec

Trochu složitější požadavek. Makro zapisuje do příslušného řádku a sloupce údaj, o který řádek a sloupec jde.

Sub popisuj()
For i = 1 To 9 For j = 1 To 3 Cells(i, j) = "Řadek: " & i & " - Sloupec " & j Next j Next i End Sub

Ukázka:

Microsoft Excel - ukazky zápisu do bunky.

Vyplnit oblast textem

Makro vyplní více buněk požadovaným textem.

Sub Vicebunek()16:13 30.11.2018 Range("A1, A3, A5") = "Ahoj!" ' nebo lépe s udanou vlastností ' Range("A1, A3, A5").Value = "Ahoj!" End Sub

Sub Vicebunek2()      Range("A1:B5") = "ABECEDA" End Sub

Poznámka

Opět lze místo Value zvolit i jinou vlastnost pro zápis.

Ve vybrané oblasti zapsat hodnotu do určité buňky

Pomocí makra zapište údaj do určité buňky ve vybrané oblasti.

Sub Dobunky()
     Range("A1:C5").cells(8) = "ZYZ"
End Sub

Toto je trochu složitější úvaha. Zápis se provádí do x-té buňky ze zadaného rozsahu.
V naší výběrové tabulce má první řádek pozice:
1 2 3 4 5
druhý řádek pozice:
6 7 8 9 10
třetí řádek pozice:
11 12 13 14 15 16
Náš požadavek je zapsat požadovanou hodnotu do pozice (buňky) 8.

Přičti číslo

Dotaz: Lze nějak nastavit buňku, aby pokaždé když do ní napíšu číslo, tak udělalo součet? tzn poprvé do ní napíšu 10, podruhé do té samé buňky 15, zobrazí se 25?

Odpověď: Lze, například využitím Worksheet_Change, kdy "platnost" (pro kterou buňku přičítání platí) je omezena pro buňku M7 a do pomocné buňky M8 se ukládá pomocná hodnota (nutná pro příští výpočet).

Možnost 1

Využívá se pomocné buňky.

Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$M$7" Then Application.EnableEvents = False Target = Target + Range("M8").Value Range("M8") = Target Application.EnableEvents = True End If End Sub

Možnost 2

Využít Worksheet_SelectionChange a Worksheet_Change (není nutná pomocná buňka na proměnou).

Dim StaraHodnota As Integer Private Sub Worksheet_SelectionChange(ByVal Target As Range) StaraHodnota = Target.Value End Sub Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Target = Target + StaraHodnota Application.EnableEvents = True End Sub

Možnost 3

Asi nejelegantnější řešení. Za nápad a inspiraci děkuji Petru Pecháčkovi, autor webu: excelplus.net. Řešení využívá Application.Undo

Private Sub Worksheet_Change(ByVal Target As Range) Dim rngSledovanaBunka As Range 'sledovaná buňka Set rngSledovanaBunka = Range("B2") 'test na změnu sledované buňky If rngSledovanaBunka.Address = Target.Address Then 'nová hodnota dblNovaHodnota = Target.Value Application.ScreenUpdating = False Application.EnableEvents = False 'krok zpět Application.Undo 'stará hodnota dblStaraHodnota = Target.Value 'přičtení nové hodnoty ke staré Target.Value = dblStaraHodnota + dblNovaHodnota 'výběr další buňky 'pozn. Application.Undo neposouvá výběr Target.Offset(1, 0).Select Application.EnableEvents = True Application.ScreenUpdating = True End If End Sub

Vkládaní vzorců (funkcí)

Jak vkládat do buněk Excelu vzorce - funkce. Aby to nebylo tak jednoduché dají se zadávat hodnoty jako absolutní/relativní/smíšené. Názvy funkci mohuo být v angličtině nebo češtině systém zápisu může bát A1 nebo R1C1. Takže při psaní je o zábavu postaráno. Ukázkou pár možných zápisu:

Range("B1").Formula = "=A1" Range("B2").Formula = "=A$1" Range("B3").Formula = "=$A$1" Range("A1").Formula = "=SUM(B2:B5)" Range("A2").FormulaR1C1 = "=SUM(RC[1]:R[3]C[1])" Range("A3").FormulaLocal = "=SUMA(B2:B5)" Range("A4").FormulaR1C1Local = "=SUMA(R[-2]C[1]:R[1]C[1])"

Podrobněji o vkládání vzorců a funkcí pomocí VBA do buněk Microsoft Excelu.

Související články

Máteli zájem o další související informace


Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor soubor ve formátu *.xlsm ke stažení zdarma je v přípravě. Soubor využívá makra.


Závěr

Údaje makro v Microsoft Excel zapisuje na aktuálním listu v aktuálním sešitu. Pokud budete chtít makrem provést zapis na jiný list (sešit), je potřeba kód doplnit o adresu daného listu (sešitu).

Článek byl aktualizován: 19.09.2020 11:07

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře

" ; // echo "kompletni_cesta :" ; // echo $adresar_pro_vkladani ; // echo "
" ; // echo " Tady bude možnost přidání komentáře" ; // echo "
" ; // echo "
" ; $kompletni_cesta = "komentare"; $adresar_pro_vkladani = $kompletni_cesta; ?> \n"; reset($polozky); while (list($key, $val) = each($polozky)) { if ($val != "." && $val != "..") { if (!is_dir($val)) { // echo "$val
\n"; $fp = FOpen ($adresar_pro_vkladani."/".$val, "r"); //otevře soubor book.dat pro čtení $data = FRead ($fp, FileSize($adresar_pro_vkladani."/".$val)); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře FClose($fp); echo "$data"; } } } ?>




Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2020 |