簡體   English   中英

For循環更改與范圍Excel VBA有關的公式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM