Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Excel - Makro pro vložení aktuálního data při změně řádku

Dobrý den,

Řekněme, že mám makro pro vkládání aktuální data na konkrétní řádek při změny hodnoty

Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Row
    Case 1
      'Ignore first row
      Exit Sub
  End Select
  Select Case Target.Column
    Case 3
      'Ignore column C
      Exit Sub
  End Select
  Application.EnableEvents = False
  Range("C" & Target.Row) = Date
  Application.EnableEvents = True
End Sub

Funguje správně, až na jeden problém, že je fixovaný na sloupec C. Pokud teda přidám sloupec, tak to bude stále vkládat do C, což je špatně.

[]

To by však šlo vyřešit tím, že by výběr sloupce nebyl statický, ale udělal bych to pomocí vyhledání "Date" v prvním řádku. A při každém přidání/odebrání sloupce by se to opětovně zavolalo.

Jak to, prosím Vás, upravím, aby to tak fungovalo?

Děkuji

PS. Samozřejmě je tu stále to, co má vlastně vyhledávat, ale to považuji za naprostý detail, kdy vyhledávané slovo snadno změním.

Předmět Autor Datum
Na ten svoj kód zabudni a miesto neho daj tento: Private Sub Worksheet_Change(ByVal Target As Range…
robert13 06.09.2023 11:59
robert13
Ano, teď to funguje přesně jak má. Mockrát děkuji
MichalDM 06.09.2023 21:35
MichalDM
Dobrý den, Chtěl bych obnovit tenhle dotaz, poněvadž až teď jsem zjistil, že makro vykazuje jednu c…
MichalDM 05.10.2023 10:24
MichalDM
Nnnno tak... upresnime si... Ak klikneš na bunku a dáš ENTER, určite sa dátum neprepíše. Pravdepodo… poslední
robert13 05.10.2023 18:08
robert13

Na ten svoj kód zabudni a miesto neho daj tento:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo koniec
    Stlpec = WorksheetFunction.Match("Date", Rows("1:1"), 0)
    On Error GoTo 0
    If Target.Row <> 1 And Target.Column <> Stlpec Then
        Application.EnableEvents = False
        Cells(Target.Row, Stlpec) = Date
        Application.EnableEvents = True
    End If
    Exit Sub
koniec:
    MsgBox "Neexistuje stlpec so zahlavim ""Date""", vbExclamation, "Chyba"
End Sub

Dobrý den,

Chtěl bych obnovit tenhle dotaz, poněvadž až teď jsem zjistil, že makro vykazuje jednu chybu. Pokud kliknu na buňku a dám jednoduše ENTER, čímž se nic nezmění, ale makro to přesto bere jako změnu a aktualizuje datum.

Psát tam, aby ignoroval klávesu ENTER je asi blbost, lepší by bylo, aby porovnal starou a novou hodnotu a nastavil datum pouze při neshodě.

Šlo by to upravit, prosím?

Děkuji

Nnnno tak... upresnime si...

Ak klikneš na bunku a dáš ENTER, určite sa dátum neprepíše.
Pravdepodobne myslíš dvojklik na bunku, čo je vstupom do jej editačného režimu. Takýto vstup samozrejme predpokladá, že budeš hodnotu opravovať...
Ak budeš skutočne opravovať, tak asi zmena dátumu na aktuálny je v poriadku. Veď potrebuješ vedieť, kedy došlo ku zmene údaja, nie?
Ak si sa pomýlil a chceš ponechať pôvodnú hodnotu, tak predsa nestláčaj ENTER ale ESCAPE.

Mimochodom, pravdepodobne si nezaregistroval, že som doriešil aj tvoj iný dotaz: skrývanie stĺpcov pri filtrovaní... Dal som si totiž tú prácu, aby som ti pomohol a zaoberal som sa tým ešte v ďalších riešeniach, ale už ťa to nezaujímalo. Takže sem ani nebudem dávať link na ten tvoj dotaz, tentokrát si daj ty tú prácu s jeho nájdením i nájdením príslušnej odpovede s riešením...

A vôbec... človek po tom ani nevie, či ťa vôbec ešte zaujíma riešenie i tohto dotazu a či sa tým má vôbec zaoberať...

Zpět do poradny Odpovědět na původní otázku Nahoru