[英]For loop to change formula in relation to range excel vba
哇,我覺得我真的很接近這個。
我在模塊中有以下代碼:
Range("R1400").Formula = "=(ROUND(AC1400, 0))+0.0625"
Range("R1401").Formula = "=(ROUND(AC1401, 0))+0.0625"
Range("R1402").Formula = "=(ROUND(AC1402, 0))+0.0625"
Range("R1403").Formula = "=(ROUND(AC1403, 0))+0.0625"
Range("R1404").Formula = "=(ROUND(AC1404, 0))+0.0625"
Range("R1405").Formula = "=(ROUND(AC1405, 0))+0.0625"
Range("R1406").Formula = "=(ROUND(AC1406, 0))+0.0625"
Range("R1407").Formula = "=(ROUND(AC1407, 0))+0.0625"
Range("R1408").Formula = "=(ROUND(AC1408, 0))+0.0625"
Range("R1409").Formula = "=(ROUND(AC1409, 0))+0.0625"
Range("R1410").Formula = "=(ROUND(AC1410, 0))+0.0625"
Range("R1411").Formula = "=(ROUND(AC1411, 0))+0.0625"
Range("R1412").Formula = "=(ROUND(AC1412, 0))+0.0625"
Range("R1413").Formula = "=(ROUND(AC1413, 0))+0.0625"
Range("R1414").Formula = "=(ROUND(AC1414, 0))+0.0625"
Range("R1415").Formula = "=(ROUND(AC1415, 0))+0.0625"
Range("R1416").Formula = "=(ROUND(AC1416, 0))+0.0625"
Range("R1417").Formula = "=(ROUND(AC1417, 0))+0.0625"
Range("R1418").Formula = "=(ROUND(AC1418, 0))+0.0625"
Range("R1419").Formula = "=(ROUND(AC1419, 0))+0.0625"
Range("R1420").Formula = "=(ROUND(AC1420, 0))+0.0625"
Range("R1421").Formula = "=(ROUND(AC1421, 0))+0.0625"
Range("R1422").Formula = "=(ROUND(AC1422, 0))+0.0625"
Range("R1423").Formula = "=(ROUND(AC1423, 0))+0.0625"
Range("R1424").Formula = "=(ROUND(AC1424, 0))+0.0625"
Range("R1425").Formula = "=(ROUND(AC1425, 0))+0.0625"
Range("R1426").Formula = "=(ROUND(AC1426, 0))+0.0625"
Range("R1427").Formula = "=(ROUND(AC1427, 0))+0.0625"
Range("R1428").Formula = "=(ROUND(AC1428, 0))+0.0625"
Range("R1429").Formula = "=(ROUND(AC1429, 0))+0.0625"
現在,讓我清楚一點,這段代碼可以按照我的意願工作。 顯而易見,我在一列中采用了一系列數字,將它們全部四舍五入為最接近的整數,然后加一個十六進制,並在另一列中表示這些值。
然而
我覺得這可以用更少的代碼“更好地”執行,並且我想成為一個更有效率的程序員,所以我嘗試這樣寫:
Dim X As Integer
For X = 1400 To 1429
Range("R" & X).Formula = "=(ROUND(""AC"" "&X", 0))+0.0625"
Next X
但這(以及我嘗試過的變體)都拋出“ 1004”錯誤或語法錯誤。 大部分我做了有帶引號及其位置做了,變化然后我也試圖執行這些問題提供咨詢意見在這里 , 這里, 這里, 這里,並在這里 ,但他們都不來可以提供我一直在尋找的解決方案,否則就我的經驗而言,它們對我來說沒有意義。
我的搜索可能沒有(可能)沒有包含我要查找的字詞,但這可能是因為我現在正用此方法在VBA進行首次嘗試:)
感謝您的幫助或參考。 這是我關於StackOverflow的第一個問題,但是您肯定已經教給我了我迄今為止關於編碼的所有知識。
正如我在上面的評論中所提到的,您不需要循環,您可以簡單地使用:
Range("R1400:R1429").Formula = "=(ROUND(AC1400, 0))+0.0625"
Excel將為每一行正確調整公式,因此您將:
R1400
公式=(ROUND(AC1400, 0))+0.0625
R1401
公式=(ROUND(AC1401, 0))+0.0625
R1429
=(ROUND(AC1429, 0))+0.0625
您需要將Range
函數中的X
值轉換為字符串。 您可以使用相同的技術將引用單元格的值直接傳遞給ROUND
,而不是傳遞單元格引用。 我不知道這是否有所改善,但這是我的本能。
Range("R" & CStr(X)).Formula = "=(ROUND(" & Range("AC" & CStr(X)).Value & ", 0))+0.0625"
正如@simoco所指出的,您根本不需要使用循環。 但是,如果您仍然想要或將來遇到類似的問題,上述方法應該可以解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.