Stránka 1 z 1
Excel - převod čísla z buňky do komentáře
Napsal: 17 úno 2014 19:25
od Majk1976
Dobrý den, může mi někdo pomoci s VBA ?
Mám v jednom sloupci hodnoty (číslo) a potřeboval bych to převést na komentář v jiném sloupci. Řádky zdroje a cíle jsou vždy stejné.
Jedinou podmínku bych tam chtěl a to aby se komentář vložil ze zdroje jedině když je to číslo.
Předem moc děkuji , vaše pomoc pomáhá mnoho začátečníkům pochopit základy VBA
Díky
Re: Excel - převod čísla z buňky do komentáře
Napsal: 18 úno 2014 09:24
od cmuch
Makro projede sloupec A do posledniho obsazeného řádku a pokud je číslo tak vloží komentář o dvě buňky doprava.
Kód: Vybrat vše
Sub PridejKomentar()
'
Dim bunka As Variant
Dim radek As Integer
For radek = 1 To Cells(Rows.Count, "A").End(xlUp).Row 'opakuj pro radky od 1 do posledniho obsazeneho
bunka = Cells(radek, "A").Address 'bunka co se ma kontrolovat
If IsNumeric(Range(bunka)) And Not IsEmpty(Range(bunka)) Then 'je cislo v bunce?
With Range(bunka).Offset(0, 2) 'pridej komentar o dve bunky doprava
.ClearComments
.AddComment
.Comment.Visible = False
.Comment.Text Text:=Range(bunka).Text
End With
End If
Next radek
End Sub
Re: Excel - převod čísla z buňky do komentáře
Napsal: 18 úno 2014 10:00
od Majk1976
Mockrát díky, to je přesně co jsem potřeboval.
A díky za ty komentáře přímo v makru, to je nejlepší návod jak to pochopit.
--- Doplnění předchozího příspěvku (18 Úno 2014 10:34) ---
Měl bych ještě malou otázečku, kdyby zdroj byl sloupec "M" a potřeboval bych komentář do sloupce "E" tak tam už bych asi musel specifikovat zdroj a cíl jiným způsobem?
Re: Excel - převod čísla z buňky do komentáře
Napsal: 18 úno 2014 17:11
od cmuch
Lze takto
Tento řádek říká pro kolik bude platit řádků od prvního ve sloupci A, pokud se budeš chtít řídit podle jiného sloupce tak změň písmeno
Kód: Vybrat vše
For radek = 1 To Cells(Rows.Count, "A").End(xlUp).Row 'opakuj pro radky od 1 do posledniho obsazeneho
Zdrojová buňka - Zde "A", uprav podle zdrojového sloupce. Ty změníš A na M.
Kód: Vybrat vše
bunka = Cells(radek, "A").Address 'bunka co se ma kontrolovat
Tento řádek
Kód: Vybrat vše
With Range(bunka).Offset(0, 2) 'pridej komentar o dve bunky doprava
uprav pak následovně.
Offset(0, 2) znamená pro jakou buňku bude platit od zdrojové.
zde pro druhou doprava.
-1.číslo je pro řádky
--pokud od zdrojové buňky se budeš chtít posunout nad ní, tak budeš zadávat záporná čísla, pokud pod ní tak kladná
-2.číslo je pro sloupce
--pokud od zdrojové buňky se budeš chtít posunout vlevo od ní, tak budeš zadávat záporná čísla, pokud vpravo od ní tak kladná
Pro tebe bude tedy platit
Offset(0, -8)
Re: Excel - převod čísla z buňky do komentáře
Napsal: 18 úno 2014 17:26
od lubo.
Když máš chuť si hrát, můžeš to taky udělat přes funkci:
Kód: Vybrat vše
Public Function PridejKomentar(Bunka As Range) As Variant
Dim rng As Range
Dim sFormat As String
If TypeName(Bunka) <> "Range" Then ' Ošetříme nechtěné parametry
PridejKomentar = "To není adresa"
GoTo Konec:
End If
Set rng = Bunka.Cells(1, 1) ' když tam bude více buněk, bereme jen první
If IsNumeric(rng) And Not IsEmpty(rng) Then ' je cislo v bunce?, datum není číslo
With Application.ThisCell ' pridej komentar
sFormat = rng.NumberFormat
If sFormat = "General" Then ' upravíme formát
sFormat = "General Number"
End If
If .Comment Is Nothing Then
.AddComment ' Komentář tam není, přidáme
.Comment.Visible = False
.Comment.Text Text:=Format(rng.Value, sFormat) ' rng.Text může vrátit "###"
Else ' Na konec přidáme číslo
.Comment.Text Text:=.Comment.Text & vbCrLf & Format(rng.Value, sFormat)
End If
End With
PridejKomentar = "Ok"
Else
PridejKomentar = "To není číslo"
End If
Konec:
End Function
Funkce vezme číslo z buňky na kterou ukazuje parametr, přidá ho do komentáře v buňce ve které je zapsána a vypíše výsledek.
Re: Excel - převod čísla z buňky do komentáře
Napsal: 25 úno 2014 14:00
od Majk1976
Díky vám za pomoc, hlavně to vysvětlení Offset(0,2) mi moc pomohlo