1
我有一個表格,它接收用戶輸入數據並從數據中填充表格的其餘部分。到目前爲止,我已經創建了一個自動填充用戶數據表的宏。在表格中向下多次運行宏
我想讓用戶輸入他們想要運行宏的次數(因爲每個表顯示一天的輸入),但是每次運行宏時它只填充相同的空間並且不顯示多天的價值表。
我有一個表格,它接收用戶輸入數據並從數據中填充表格的其餘部分。到目前爲止,我已經創建了一個自動填充用戶數據表的宏。在表格中向下多次運行宏
我想讓用戶輸入他們想要運行宏的次數(因爲每個表顯示一天的輸入),但是每次運行宏時它只填充相同的空間並且不顯示多天的價值表。
不知道您的宏,讓我們假設你有一個存儲用戶輸入一列一個通用的宏:
Sub InputMacro()
Range("B1:B100").Value = InputBox("What do you want to store in column B")
End Sub
如果要遍歷這一點,首先需要參數的宏,即使部分靈活,你想在每個循環步驟中改變它。例如。如果你想運行在多列,你可以這樣做:
Sub InputMacro_new(intColNumber As Integer, Optional lngRowNumber As Long = 100)
Cells(1, intColNumber).Resize(lngRowNumber) = _
InputBox("What do you want to store in column " & _
Split(Cells(1, intColNumber).Address, "$")(1))
End Sub
現在,這將接受一個參數intColNumber
,即你可以叫InputMacro_New 2
填寫欄B.注意,我還提供了一個可選參數lngRowNumber
默認情況下是100.你不需要提供這個參數 - 但是如果你想要的話,你可以覆蓋默認值,例如現在InputMacro_New 2, 50
)
,你可以在調用宏另一個宏創建一個循環:
Sub MyLoop()
Dim intCol As Integer, varMaxCols As Variant
varMaxCols = InputBox("How many columns do you want to fill?")
If Not IsNumber(varMaxCols) Then Exit Sub
ElseIf varMaxCols < 1 Or varMaxCols > 255 Then Exit Sub
For intCol = 1 To varMaxCols
InputMacro_new intCol
Next intCol
End Sub
當然,如果你願意,你也可以兩者結合成一個更大的宏觀 - 但ESP。對於更大的宏,最好的做法是將其分成更小的程序。
請向我們顯示您的代碼。 – chuff 2013-02-18 04:37:18