EXCEL單元格公式具有“響應(yīng)式”特征,即表格中任一個單元格數(shù)據(jù)發(fā)生變化后,所有設(shè)置了公式的單元格數(shù)據(jù)也隨之變化。也就是說,只有手動操作單元格后,才能激活其它公式單元格的響應(yīng)。
例如,EXCEL函數(shù)NOW返回年、月、日以及小時和分鐘,如4/5/2023 8:03。如果表格中單元格沒有變化,則顯示時間不變,只有某個單元格發(fā)生變化了,錄入函數(shù)NOW的單元格才會更新時間。
當(dāng)要求按時、或按其它條件自動觸發(fā)公式單元格的響應(yīng),則需要用EXCEL VBA設(shè)定設(shè)定條件自動觸發(fā)句柄來實現(xiàn)。
一、EXCEL自動化設(shè)置事件驅(qū)動事件
1、用VBA的Application.OnTime設(shè)定重復(fù)運(yùn)行操作
VBA的Application.OnTime事件指定一個過程在將來特定時間開始運(yùn)行,是VBA非常重要的定時觸發(fā)事件,需要按時自動管理EXCEL表格時就會用到。
為此,編寫事件【W(wǎng)riteRandomNumber】代碼如下:
Sub WriteRandomNumber()Dim sTime As StringsTime = '00:00:' & Sheet1.Range('C4').ValueRandomize' 初始化隨機(jī)數(shù)生成器Sheet1.Range('C3').Value = Int(Rnd * 100)' 生成0 到 100 之間的隨機(jī)數(shù)并將其寫入 A1 單元格Application.OnTime Now + TimeValue(sTime), 'WriteRandomNumber', , True' 延遲C4指定秒數(shù)重復(fù)執(zhí)行 WriteRandomNumberEnd Sub
運(yùn)行【W(wǎng)riteRandomNumber】事件,依次完成以下操作:
將【W(wǎng)riteRandomNumber】事件代碼復(fù)制、粘貼到【模塊1】編輯欄中,如圖:
圖1:復(fù)制、粘貼【W(wǎng)riteRandomNumber】事件代碼到【模塊1】編輯欄中
2、打開EXCEL文檔時自動啟動運(yùn)行【W(wǎng)riteRandomNumber】事件代碼
打開EXCEL文檔事件編輯窗口
圖2:鼠標(biāo)雙擊資源管理器的【ThisWorkBoob】,在彈出文檔事件窗口【通用】選項中選【文檔事件】
圖3:在彈出文檔事件窗口【聲明】選項中選事件【Open】
將代碼【Call WriteRandomNumber】復(fù)制、粘貼到事件Workbook_Open中,
圖4:文檔打開時啟動事件【Open】,運(yùn)行事件【W(wǎng)riteRandomNumber】
打開文檔時運(yùn)行事件【W(wǎng)riteRandomNumber】,效果演示如下:
圖5:文檔打開時運(yùn)行事件【W(wǎng)riteRandomNumber】,指定單元格中數(shù)字自動變化
3、EXCEL自動化設(shè)置實例
圖6:文檔打開時運(yùn)行事件【W(wǎng)riteRandomNumber】,單元格C3按C4指定時長(秒)自動變化
當(dāng)EXCEL表格中某一個單元格(C3)被按時驅(qū)動后,可以用這個被驅(qū)動單元格其它更多單元格。
【圖6】中驅(qū)動順序及內(nèi)容如下:
文檔打開后,事件【W(wǎng)riteRandomNumber】按單元格【C3】指定秒數(shù)驅(qū)動單元格【C4】,及定時生成隨機(jī)數(shù)并賦值給單元格【C3】;
由于許多數(shù)據(jù)和時間相關(guān),可以在數(shù)據(jù)驅(qū)動基礎(chǔ)上設(shè)置時間驅(qū)動單元格。
圖7:在單元格C7:C16設(shè)置不同時間變量
注:函數(shù)【DATEVALUE】計算1900年到現(xiàn)在天數(shù)
因為是按秒驅(qū)動,只能直觀看到單元格【C16】中秒數(shù)的變化,60秒后單元格【C15】中分鐘數(shù)就會自動變化,其它時間單元格類似。需要某些時間按特定時間自動變換或更新時,和相關(guān)時間單位單元格綁定即可。
統(tǒng)計數(shù)據(jù)不但常常和時間相關(guān),也和空間相關(guān),即所謂“時空”關(guān)聯(lián)。
圖8:在單元格C19:C21設(shè)置X、Y、Z變量
注:這里空間變量賦值為0-100間的整數(shù),可以根據(jù)實際情況設(shè)置不同空間變量值
當(dāng)一個表格設(shè)置了單元格自動變化功能后,該文檔其它表格也可以綁定動態(tài)單元格,從而自動變換、更新。
圖9:同一文檔中不同表格數(shù)據(jù)互動效果
注:右邊表格sheet1為數(shù)據(jù)驅(qū)動表格,左邊表格sheet2單元格【A1:E10】為隨機(jī)數(shù)。sheet1某個單元格按時變化后,也引起sheet2數(shù)據(jù)的變動
實現(xiàn)EXCEL自動化設(shè)置在項目演示、按時(按條件)提醒、自動報表等方面被廣泛應(yīng)用。