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  Vyřešeno

Napsal: 25 úno 2014 14:00
od Majk1976
Díky vám za pomoc, hlavně to vysvětlení Offset(0,2) mi moc pomohlo