< návrat zpět

MS Excel


Téma: Application.ScreenUpdating a MsgBox rss

Zaslal/a 23.8.2021 16:33

Vážení,

používám VBA, kde kopíruji data z jednoho sešitu do druhého.

Na začátku procedury mám kód:
Application.ScreenUpdating = False

Pro kopírování používám trochu humpolácký kód:
Windows(stary).Activate
Sheets("pomocný").Select
Range("C6:D6").Select
Selection.Copy
Windows(novy).Activate
Sheets("pomocný").Select
Range("B6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

V jedná části kopírování potřebuju nechat uživatele vybrat, zda něco chce kopírovat či nikoliv.

i = MsgBox("Zkopírovat data na listu Počet obyvatel?", vbYesNo)
If i = vbYes Then
atd...

Ovšem od této chvíle se další kopírování chová, jako by byla hodnota Application.ScreenUpdating = True
Dokonce i když znovu do kódu za MsgBox přidám příkaz Application.ScreenUpdating = False, tak stejně při kopírování se viditelně přepínají okna (prostě to bliká).

Neměli byste nějaký nápad, jak to vyřešit?

Díky.

Jméno
Kontrola
Text
  b i u s img code url hr   1 2 3 4 5 6 7 8 9 10

#051124
Stalker
Nepoužívat "humpolácký kód" a SELECT.citovat
#051125
avatar
To je odpověď, kterou jsem čekal.

Takže co místo toho mám používat, aby z jednoho souboru do druhého to z buňky, kde je vzorec, vzalo jen hodnotu?citovat
#051126
Stalker
Např. na začátku kódu načíst jednotlivé soubory (sešity) do proměnných a v kódu pracovat s nimi.

To samé si dá přece udělat i s tou částí, jak si má uživatel vybrat. Na začátku se zeptám a pak se podle toho v kódu zařídím.citovat
#051127
elninoslov
Ak je otvorený:
Sub Kopiruj()
Dim Stary As String

Stary = "Starý zdroj.xlsx"

If MsgBox("Zkopírovat data na listu Počet obyvatel?", vbQuestion + vbYesNo) = vbYes Then
ThisWorkbook.Worksheets("pomocný").Range("B6:C6").Value = Workbooks(Stary).Worksheets("pomocný").Range("C6:D6").Value
'Else 'Podľa potreby
' Exit Sub
End If
End Sub

a ak je zatvorený:
Sub Kopiruj2()
Dim Stary As String

Stary = "='E:\[Starý zdroj.xlsx]pomocný'!C6"

If MsgBox("Zkopírovat data na listu Počet obyvatel?", vbQuestion + vbYesNo) = vbYes Then
With ThisWorkbook.Worksheets("pomocný").Range("B6:C6")
.Formula = Stary
.Value = .Value
End With
'Else 'Podľa potreby
' Exit Sub
End If
End Sub

dá sa to nakombinovať rôzne.citovat
#051128
avatar
Díky. A ještě jak přetvořit kopírovací funkci, která kopíruje vzorečky?

Worksheets("Vstupní data").Select
Range("A6:B6").Select
Selection.Copy
Range("A7:A99").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=Falsecitovat
#051129
elninoslov
Sub Kopiruj_vzorce()
With Worksheets("Vstupní data")
.Range("A6:B99").Formula = .Range("A6:B6").Formula
End With
End Sub
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