2013-02-18 26 views
1

我有一個表格,它接收用戶輸入數據並從數據中填充表格的其餘部分。到目前爲止,我已經創建了一個自動填充用戶數據表的宏。在表格中向下多次運行宏

我想讓用戶輸入他們想要運行宏的次數(因爲每個表顯示一天的輸入),但是每次運行宏時它只填充相同的空間並且不顯示多天的價值表。

+1

請向我們顯示您的代碼。 – chuff 2013-02-18 04:37:18

回答

0

不知道您的宏,讓我們假設你有一個存儲用戶輸入一列一個通用的宏:

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。對於更大的宏,最好的做法是將其分成更小的程序。