< návrat zpět

MS Excel


Téma: Po Obnoviť nefungujú makrá listu Excel 2016 rss

Zaslal/a 24.10.2019 7:20

Mám Zošit a v ňom dva Listy.
1. list je tabuľka v ktorej zadávam hodnoty a makro skopíruje obsah predošlej Bunky, ak je sú splnené podmienky.
Makro 1.listu:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Riadok, Stlpec As Integer
Dim PredoslaKvalita As String

Riadok = ActiveCell.Row
Stlpec = ActiveCell.Column

If Stlpec = 2 And Riadok <> 2 And Len(ActiveCell.Value) = 0 Then
PredoslaKvalita = Cells(Riadok - 1, 2).Value
If Len(PredoslaKvalita) > 0 Then
ActiveCell.Value = PredoslaKvalita 'Skopíruje predošlú Kvalitu
ActiveSheet.Cells(Riadok, Stlpec + 1).Activate
End If
End If
End Sub

2. list obsahuje Kontingenčnú tabuľku.

Po zadaní hodnôt do 1.listu, v 2.liste po príkaze Údaje->Obnoviť všetko (alebo kontextové menu tabuľky->Obnoviť) Makro v 1. liste prestane pracovať.

Po zatvorení Zošitu a opätovnom spustení zase všetko funguje, pokiaľ sa nepoužije príkaz Obnoviť...

Ako zabezpečiť funkciu makier po príkaze Obnoviť?

Zaslat odpověď >

#044778
avatar
Nebude to tím, že

Private Sub Worksheet_SelectionChange
je jen pro List1
a po Obnovit zůstane aktivní List2 ?citovat
#044779
avatar
Po Obnovení v 2.Liste je prechd na 1.List.
( Sheets("1.List").Select )citovat
#044780
elninoslov
Ak makrom znova vyberáte 1.List, znamená to, že v 2.Liste je tiež nejaké makro. Aké ? Rovnako to môžu spôsobovať aj iné udalostné makrá o ktorých sa nezmieňujete (Calculate, Change, ...)

PS: Inak makro podľa popisu, je podľa mňa postavené zle na Selection_Change. Lepšie by bolo Change.

PS2: Tak prvé PS beriem zatiaľ späť. Ale ako tak na to pozerám, neprišiel som na rozumný dôvod, prečo takto dopĺňať chýbajúce hodnoty v stĺpci a navyše pri prejdení cez prázdnu bunku posúvať kurzor. Priložte "ne"-funkčnú prílohu a popis čo požadujete.citovat
#044782
avatar
Re: elninoslov
To spisovanie hodnoty v jednom stĺpci je požiadavka používateľa, aby nemusel otrocky zadávať hodnotu, ktoré je nutné v každom riadku zadať, opakuje sa viac krát za sebou. Takže raz zadá tú hodnotu a potom už len pre hodnotu 1 a 2 zadáva údaje a potvrdzuje entrom.

Chybu som už našiel, bolo tam na 1. liste "zašmodrchané" makro:
Private Sub Worksheet_Activate()
'Vypnutie zobrazovania systémových hlášok.
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
End Sub

po jeho odstránení je všetko OK.citovat
#044783
elninoslov
No veď vravím, že to môže spôsobovať iná udalostná procedúra. Preto je najlepšie priložiť vždy celý súbor.
Inak dalo by sa to zapísať aj pomocou Offset
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim PredoslaKvalita As String

With ActiveCell
If .Column = 2 And .Row <> 2 And IsEmpty(.Value) Then
PredoslaKvalita = .Offset(-1, 0).Value
If Len(PredoslaKvalita) > 0 Then
.Value = PredoslaKvalita 'Skopíruje predošlú Kvalitu
.Offset(, 1).Activate
End If
End If
End With
End Sub
citovat
#044784
avatar
Ďakujem za ochotu...citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje