-
Fototrend
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
szricsi_0917
tag
Sziasztok
Egy kis segítséget szeretnék kérni vba kódhoz.
A feladat az lenne, hogy 1 vagy több lekérdezés frissítésekor kikapcsolja az automatikus számítást és ha végzett akkor kapcsolja vissza. Ez lehet a fájl megnyításakor vagy megnyított állapotban is.Option ExplicitPrivate Sub Workbook_Open()' Amikor a munkafüzet megnyílik, indítjuk a figyelőtApplication.OnTime Now + TimeSerial(0, 0, 5), "Intelligens_lekerdezes.StartQueryMonitor"End SubPrivate Sub Workbook_Activate()' Ha valamiért még nem futna, indítsuk el a monitortCall Intelligens_lekerdezes.StartQueryMonitorEnd SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)' Bezáráskor leállítjuk a figyelőtCall Intelligens_lekerdezes.StopQueryMonitorEnd SubOption ExplicitPrivate nextCheckTime As DatePrivate wasRunning As BooleanPrivate stableCount As Integer' --- Fő figyelő ---Public Sub QueryMonitor()Dim conn As WorkbookConnectionDim isRunning As BooleanOn Error Resume Next' --- Ellenőrzés: van-e futó Power Query lekérdezés ---For Each conn In ThisWorkbook.ConnectionsIf InStr(1, conn.Name, "Query -", vbTextCompare) > 0 Or _InStr(1, conn.Name, "Lekérdezés -", vbTextCompare) > 0 ThenIf conn.Refreshing ThenisRunning = TrueExit ForEnd IfEnd IfNext conn' --- Ha bármelyik fut, állítsuk manuális számításra ---If isRunning ThenIf Application.Calculation <> xlCalculationManual ThenApplication.Calculation = xlCalculationManualApplication.StatusBar = "Power Query frissítés folyamatban… képletek leállítva."End IfwasRunning = TruestableCount = 0Else' --- Ha nincs futó lekérdezés ---If wasRunning ThenstableCount = stableCount + 1' Legalább 3 egymást követő ciklusig nem fut semmiIf stableCount >= 3 Then' --- Minden kész: üzenet és automatikus számítás visszaállítása ---Application.StatusBar = FalsewasRunning = FalsestableCount = 0MsgBox "Minden lekérdezés elkészült!", vbInformation, "Kész"Application.Calculation = xlCalculationAutomaticEnd IfEnd IfEnd If' --- Újraütemezés 2 mp múlva ---nextCheckTime = Now + TimeSerial(0, 0, 2)Application.OnTime nextCheckTime, "Intelligens_lekerdezes.QueryMonitor"End Sub' --- Indítás (pl. Workbook_Open) ---Public Sub StartQueryMonitor()On Error Resume NextStopQueryMonitor ' Biztonsági leállításwasRunning = FalsestableCount = 0' --- Excel megnyitáskor automatikus számítás kikapcsolása ---Application.Calculation = xlCalculationManualnextCheckTime = Now + TimeSerial(0, 0, 2)Application.OnTime nextCheckTime, "Intelligens_lekerdezes.QueryMonitor"End Sub' --- Leállítás ---Public Sub StopQueryMonitor()On Error Resume NextApplication.OnTime nextCheckTime, "Intelligens_lekerdezes.QueryMonitor", , FalseApplication.StatusBar = FalseEnd SubA probléma mintha nem érzékelné mikor fejeződik be a lekérdezés.
Mi lehet a probléma?
Új hozzászólás Aktív témák
- Bomba ár! Lenovo ThinkPad T450s - i5-5GEN I 12GB I 512SSD I 14" FHD Touch I Cam I W10 I Garancia!
- GYÖNYÖRŰ iPhone 12 Mini 128GB Purple-1 ÉV GARANCIA - Kártyafüggetlen, MS3630
- HIBÁTLAN iPhone 15 Pro Max 256GB Natural Titanium-1 ÉV GARANCIA - Kártyafüggetlen, MS4231
- Dell Precision 3561,15.6" FHD,i9-11950H,16GB DDR4,512GB SSD,T600 4GB VGA,WIN11
- iPhone 12 Pro 128GB 100% (1év garancia)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
Fferi50
