ExcelVBA 刷新PQ生成的超級(jí)表同時(shí)修改列屬性
網(wǎng)友需求:


我們?cè)赑owerQuery中上載表后,有時(shí)會(huì)發(fā)生一個(gè)問題,日期列上載后變成了數(shù)值。這位網(wǎng)友的需求是:讓原表發(fā)生更改時(shí),自動(dòng)刷新PowerQuery生成的超級(jí)表,并將指定列修改成日期格式。
假設(shè),有如下一張表,在PowerQuery里操作上載到了表1


現(xiàn)在網(wǎng)友需求是修改Sheet1里面的單元格時(shí),自動(dòng)刷新表1數(shù)據(jù),并將日期列改成日期格式
其實(shí)刷新這個(gè)事,我們之前的ExcelVBA與PowerQuery雙劍合璧講過的,在這里
https://www.bilibili.com/video/BV1aF411a7cC
在VBE編輯器中,雙擊Sheet1

選Worksheet,再選Change。我們需要對(duì)Sheet1這張表寫更改事件。代碼在紅框內(nèi)

方便大家復(fù)制粘貼,紅框內(nèi)代碼如下:(紅框外的代碼是自動(dòng)生成的,無需手工寫)
現(xiàn)在我們對(duì)Sheet1單元格進(jìn)行修改時(shí),他會(huì)自動(dòng)刷新表1,并跳轉(zhuǎn)到表1。
這里會(huì)出現(xiàn)一個(gè)問題,就是數(shù)據(jù)量大了以后,可能超級(jí)表沒有加載完,就要運(yùn)行對(duì)A列的單元格屬性設(shè)置,造成設(shè)置失效。我暫時(shí)沒有辦法判斷超級(jí)表是否加載完畢。
但是有個(gè)笨辦法,假設(shè)你的表加載需要2分鐘,你可以在設(shè)置單元格屬性前加上一句
Application.Wait (Now + TimeValue("0:03:00"))
括號(hào)里的時(shí)間是? 小時(shí):分鐘:秒? ? 讓他大于你的刷新時(shí)間后再執(zhí)行下面的代碼
如果誰有能判斷超級(jí)表加載是否完成的判斷方法,歡迎大家留言。

ExcelVBA教程:https://www.bilibili.com/video/BV1rt4y1a72y
更多教程:https://www.bilibili.com/read/cv10222110