"VBA「與」函數"的一次完美邂逅

往往大家做動態圖表時,都會想到函數Index和Offset函數來做,沒有錯,但是你實現之後,每次要用鼠標去點一下,動態圖表才會變一下,這個地方我們就用VBA來彌補函數的不足

我現在用一個實例來講解一下

第一步:在B14單元格輸入1

解釋:目的是為了做VBA裡的變量的臨時值,現在是空的,所以先輸入一個值代替,便於大家理解

第二步:在B15單元格輸入公式

1. ="動態圖表"&"("&INDEX($A$1:$L$1,1,$B$14)&")"

複製代碼

解釋:作為圖表的標題,Index第一個參數是一年的十二個月,第二參數是B14,是變量,由VBA代碼運行時決定, Range("B14").Value2 = i第三步:在B16單元格輸入函數,向下填充公式

1.

2. =INDEX($A$2:$L$12,ROW(A1),$B$14)

複製代碼

解釋:index函數是這個動態圖表的核心,圖表數據的變化主要由Index函數的第三參數決定,因為第三參數一改變,整個區域都會發生變化,當第三參數是是1時,顯示一月份的數據,當第三參數是2時,顯示二月份的數據第四步:作圖和美化圖表,作出來如下圖

第五步:Alt+F11打開VBE編輯器,插入菜單,插入模塊,把代碼貼到模塊裡

Dim i As Integer '定義i為模塊級別的變量,不能定義為過程級別的變量,因為過程級別變量當過程結束時,變量作用週期也就結束了[code=vb]Sub 時長()Range("B14").Value = i '給單元格B14賦值為變量ii = i + 1 '累加iIf i > 12 Then '如果i大於12,那麼i的值又從1開始i = 1End IfApplication.OnTime Now + TimeValue("00:00:01"), "時長" 'Ontime事件,每隔1秒又把過程轉到"時長"過程,這樣起到了循環的作用End SubSub 停止()On Error Resume Next '防止程序出錯Application.OnTime Now + TimeValue("00:00:01"), "時長", , False '結事OnTime事件"時長"End Sub[/code]第六步:把"時長"過程指定給"開始按扭",把"停止"過程指定給"停止按鈕" 解釋:Offce按鈕(2007版的),EXCEL選項,常規,勾起顯示"開發工具"選項卡然後,開發工具,控件組,插入,表單控件,命令按扭,在工作裡畫一個,單元右鍵,指定宏。


分享到:


相關文章: