回覆列表
-
1 # 河南新華電腦1q
-
2 # 劍雲鋒
首先我們開啟一個工作樣表作為例子。
在excel中我們框選一個區域範圍,然後在其中選擇一個單元格輸入公式,這個時候需要藉助ctrl鍵進行組合操作。
而在vba中,我們可以直接指定一個範圍,然後在範圍內指定單元格輸入公式。與excel中操作不同,excel裡可以在框選的範圍後,選取範圍外的單元格進行輸入。
我們使用alt+f11組合快捷鍵進入vbe編輯器,插入一個新的模組,並在模組中輸入以下程式碼:
Sub SetSheetTabColor()
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
End Sub
我們可以看到vba程式碼中的cells單元格的設定座標是從range指定範圍的左上角起始序列開始計算,也就是cells(1,1)並不是a1單元格而是c5單元格。
所以如果我們把cells單元格設定為一個超出range範圍的單元格序列,那麼就會出現以c5單元格為基準座標進行位移。Worksheets("sheet1").Range("C5:C10").Cells(0, 0).Formula = "=Rand()"比如這個程式碼最後寫入公式的單元格在B4
網上看的,相對比較實用。
-
3 # Excel和VBA
如果可以直接用函式解決的,其實不需要一定寫VBA
如果一定要寫VBA的話,大執格式是這樣的:
rng..FormulaR1C1 = "=" & 函式的名字& "(RC[-" & Rng.Columns.count & "]:RC[-1])"
我這裡是假設模擬sum函式的寫法
首先我們開啟一個工作樣表作為例子。
使用alt+f11組合快捷鍵進入vbe編輯器,插入一個新的模組,並在模組中輸入以下程式碼:
Option Explicit
Sub Random()
Dim myRange As Range
Dim rng As Range
"設定對單元格區域的引用
Set myRange = Worksheets("Sheet1").Range("A1:D5")
Set rng = Worksheets("Sheet1").Range("e1:i5")
"對Range物件進行操作
myRange = "=rand()"
rng.Value = myRange.Value
myRange.Font.Bold = True
End Sub
這裡我們設定了2個區域變數,直接宣告它們是range型別,這樣才能對其區域單元格進行引用。如果去掉型別宣告,那麼過程將會報錯需要物件。這點大家要注意。
Dim myRange
Dim rng 會報錯。
我們先來設定以下區域單元格的範圍,這裡myRange是在sheet1工作表中的a1到d5的矩形連續單元格範圍。而rng是同樣sheet1工作表中的e1到i5的矩形連續單元格。
因為聲明瞭range型別,所以我們這裡直接可以對myRange變數進行賦值,使用=號直接賦值即可。由於我們賦值的是一個excel程式函式,所以要用雙引號括起來。
接著重點是,如果要對這個區域內的單元格值進行引用,我們必須清楚寫清楚是引用的兩個區域的值value。寫法就要這樣
rng.Value = myRange.Value
最後我們可以得到正確的結果,在這兩個區域中myRange是隨機函式公式,而rng是固定的當次執行隨機函式後的值。這裡兩個值不對應一致是因為在貼上操作後rand()函式重新計算了一次的結果。
祝大家生活愉快。