2014-03-24 74 views
0

我錄製了一個創建直方圖的宏。該代碼是這個許多使用VBA宏的直方圖

Sub histcreate 

    Application.Run "ATPVBAEN.XLAM!Histogram", ActiveSheet.Range(_ 
    "$A$3:$A$1601"), ActiveSheet.Range("$BH$1"), , False, False, True, _ 
    True 
End Sub 

我想修改這個宏,使其不僅創造了這一個直方圖,但50直方圖與範圍

"$B$3:$B$1601" 
"$C$3:$C$1601" 

等。我想我應該使用for循環,但我不知道如何通過字母循環。 謝謝!

回答

0

嘗試這樣(未經測試,但每個評論修改)。這在循環內使用.Offset方法和計數器/循環變量i

Sub histcreate 
Dim firstRange as Range 
Dim secondRange as Range 
Dim numberOfColumns as Long 

'### How many columns wide is the data which will plot as histograms? 
numberOfColumns = 50 

'### Define the first column of data used for the histogram 
Set firstRange = ActiveSheet.Range("$A$3:$A$1601") 

'### Define the second range (originally $BH$1) 
Set secondRange = ActiveSheet.Range("$BH$1) 

For i = 0 to (numColumns -1) 
    Application.Run "ATPVBAEN.XLAM!Histogram", _ 
     firstRange.Offset(0,i).Address, _ 
     secondRange.Offset(0,i*2), _ 
     , False, False, True, True 
Next 

End Sub 

從評論

我覺得有什麼不對您的函數調用更新。我在其他地方找到的示例顯示了不同的論點或者至少,它們不會省略範圍參數。參見例如HERE

給出的示例HERE建議參數的不同順序,第一個和第三個參數爲Range對象,第二個參數爲""空字符串。

此功能沒有很好的記錄,但我認爲如果你按照第一個鏈接,並嘗試找出三個範圍參數需要什麼,那麼你將能夠根據需要更新此代碼。

+0

謝謝! $ BH $ 1'是2列輸出的第一個單元。所以我需要 轉換2。所以'$ BH $ 1'' $ BJ $ 1'' $ BL $ 1' – user137425

+0

請參閱上面的答案修訂。 –

+0

謝謝,但我得到了「輸入範圍必須連續」的錯誤。 – user137425