Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel 2007 > 2019, nefunkční část VBA kódu

Narazil jsem na problém. V jedné tabulce Excelu 2007 jsem měl (VBA) kód listu, který po otevření v Excelu 2019 nefunguje. Mám dvě podobné tabulky/aplikace, v jedné to jde, v druhé ne. Principiálně se mi to zdá skoro stejné, zkoušel jsem kód zkopírovat (a upravit podle místních podmínek), ale nechytl jsem se.

Řešil jsem úlohu, aby v buňce napsaný text "051119" byl chápán jako text "05.11.2019", s čímž pak dokážu později pracovat jako s datumem. Mám na to kód listu. Excelu 2007 mi to funguje v obou aplikacích, v Excelu 2019 jen v jedné.

Došlo ve VBA 2019 oproti 2007 k nějakým zásadním změnám?

Kód:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Chyba
Application.EnableEvents = False
    If (Target.Column <> 4) Or Target.Row < 8 Or Target > 311299 Or Target < 10100 Then
        Application.EnableEvents = True
        Exit Sub
    End If
    If Mid(Target, 5, 1) > 4 Then
        Stoleti = 19
        Else: Stoleti = 20
    End If
    Target = Left(Target, 2) & "." & Mid(Target, 3, 2) & "." & Stoleti & Right(Target, 2)
 
    Application.EnableEvents = True
    Exit Sub

Chyba:
    Application.EnableEvents = True
    Exit Sub
End Sub

Chci, aby tahle změna, ta akceptace změny textu na datum, platila pouze ve 4. sloupci a od 8. řádku. Formát tohoto 4. sloupce je text.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Když vytvořím nový sešit a vložím do něj ten kód, tak to funguje. Když naprosto stejný kód mám ve st…
L-Core 09.06.2020 10:09
L-Core
No tak jsem na to přišel... Na PC s Excelem 2019 chybí soubor kalendáře z verze 2007, tak jsem pros…
L-Core 09.06.2020 10:36
L-Core
Aha, oni od verze 2010 MSCAL.OCX nedodávají.. https://answers.microsoft.com/en-us/office/forum/offic…
L-Core 09.06.2020 11:33
L-Core
Jojo, matně si vybavuju, že jsem se s tím taky kdysi potýkal. Excel mylně ukazuje chybu na řádku s f…
MachR55 09.06.2020 11:53
MachR55
Mne celý kód funguje, v riadku, ktorý uvádza MachR55 mi neindikuje chybu a ani neviem, prečo by malo…
robert13 10.06.2020 07:30
robert13
Já když jsem vytvořil nový excelový dokument a tam vložil tento kód, taky funguje. Ale nefunguje mi…
L-Core 10.06.2020 08:50
L-Core
Ale veď ty chceš prevádzať textový tvar na dátum, nie? Tak načo spomíname OCX? OCX je ovládací prvok…
robert13 10.06.2020 09:28
robert13
Možná to mám v té aplikaci nějak natvrdo "poručeno", už opravdu netuším...
L-Core 10.06.2020 09:49
L-Core
Ahoj, musím souhlasit s Robertem, v kódu pracuješ "pouze" s textovým řetězcem, tak proč by měl být t…
Siki83 10.06.2020 10:03
Siki83
Tiež ma napadlo, či niekde namá zabudovaný ovládací prvok kalendára. L-Core skontroluj si súbor, či…
robert13 10.06.2020 10:28
robert13
Asi to mám: [90440-mscal-png] Vyhodím to, co je zaškrtnuté, a funguje to (E 2007, E 2019 ještě vyz…
L-Core 10.06.2020 10:34
L-Core
Otestováno na Excel 2007 a 2016 (Na 2019 se dostanu až za nějakou dobu, aktualizace W10 3-[) V obou…
Siki83 10.06.2020 10:58
Siki83
On už tam asi schovaný není, ale během vývoje (17.10.2017) jsem tam něco s datumy zkoušel, pak to ne…
L-Core 10.06.2020 11:20
L-Core
Vývoj bol ale neskôr, než Excel 2016 a ono to už nešlo ani v 2016... Ale hlavne, že je to už OK Som…
robert13 10.06.2020 11:26
robert13
No já to dělal v Excelu 2007, nic novějšího jsem neměl. Až teď jsem manželce pořídil 2019 s tím, že… poslední
L-Core 10.06.2020 12:09
L-Core

No tak jsem na to přišel...

Na PC s Excelem 2019 chybí soubor kalendáře z verze 2007, tak jsem prostě natvrdo vytvořil potřebný adresář a nakopíroval to tam:
c:\Program Files (x86)\Microsoft Office\Office12\MSCAL.OCX

Nechápu, nerozumím... Instalaci Office 2019 jsem provedl jako úplnou.

Jojo, matně si vybavuju, že jsem se s tím taky kdysi potýkal. Excel mylně ukazuje chybu na řádku s funkcí MID, ale hlavní problém je v řádku

Target = Left(Target, 2) & "." & Mid(Target, 3, 2) & "." & Stoleti & Right(Target, 2)

Už si moc nevzpomínám, jak jsem to přesně řešil, ale chce to použít nějakou konverzní funkci jako CDATE nebo něco podobnýho...

Ahoj, musím souhlasit s Robertem, v kódu pracuješ "pouze" s textovým řetězcem, tak proč by měl být třeba ovládací prvek kalendáře ???
Kód testován na Excel 2007, 2016, 2019 - bez problému.

Píšeš, že na jednom stroji běhá kód bez problému a na druhém je zrada, jedná se o jeden soubor, který mezi stroji přenášíš? Nebo je na druhém stroji kopie onoho souboru?

Není možné, že by se v "nefunkčním" souboru nacházel zapomenutý ovládací prvek kalendáře?

Tiež ma napadlo, či niekde namá zabudovaný ovládací prvok kalendára.
L-Core skontroluj si súbor, či niekde v hárkoch toho súboru (možno aj v inom, než v ktorom zadávaš tie "dátumy") nie je použitý ovládací prvok ActiveX kalendára. Ten vyhodíš a malo by to byť ok.
Prekopírovaný kód je funkčný, pretože ním neprenášaš problematický ovládací prvok

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