簡體   English   中英

For..Next語句的無限循環

[英]Endless loop with For..Next statement

目標:開發一個宏,以便在sheet1中進行選擇,將第十二行中的值除以1.35,然后將其轉移到sheet2中選定的單元格區域中。

我從簡單開始,它的工作原理是:

Worksheets("Sheet2").Cells(114, 12).Formula = Worksheets("Sheet1").Cells(58, 14) / 1.35
Worksheets("Sheet2").Cells(115, 12).Formula = Worksheets("Sheet1").Cells(70, 14) / 1.35
Worksheets("Sheet2").Cells(116, 12).Formula = Worksheets("Sheet1").Cells(82, 14) / 1.35
Worksheets("Sheet2").Cells(117, 12).Formula = Worksheets("Sheet1").Cells(94, 14) / 1.35
Worksheets("Sheet2").Cells(118, 12).Formula = Worksheets("Sheet1").Cells(106, 14) / 1.35
Worksheets("Sheet2").Cells(119, 12).Formula = Worksheets("Sheet1").Cells(118, 14) / 1.35
Worksheets("Sheet2").Cells(120, 12).Formula = Worksheets("Sheet1").Cells(130, 14) / 1.35
Worksheets("Sheet2").Cells(121, 12).Formula = Worksheets("Sheet1").Cells(142, 14) / 1.35

然后,我想使用循環細分代碼,但無法正確執行。

這是我所擁有的:

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As Integer
Do
i = 12
j = 14
For l = 114 To 121
For k = 58 To 142 Step 12
Worksheets("Sheet2").Cells(l, i).Formula = Worksheets("Sheet1").Cells(k, j) / 1.35
Next k
Next l
Loop Until l = 121

我的最終目標是在輸入數據時跨不同的列重復此循環。

我將使用索引來執行此操作=INDEX(Sheet1!$N$58:$N$142,(ROWS($A$114:$A114)-1)*12)/1.35請使N為您試圖除以的列將其放在您要填充sheet2中的單元格中

訣竅是取出“ do-loop L”。 這將導致無限循環,因為您永遠不會增加“ L”。 (使用相同命名變量的for循環,只有在自己的作用域內才具有該變量...然后它將不再是無限的。

嘗試如下:

Dim k, l As Integer

'Set before row
k = 46

For l = 114 To 121 Step 1
    Sheets("Sheet2").Cells(l, 12) = Sheets("Sheet1").Cells(k + 12, 14) / 1.35
Next l

我不清楚您的要求,也就是說,不知道要插入的內容(公式或值)。

如果要將公式設置為Sheet2的單元格 ,請如下修改設置行:

Sheets("Sheet2").Cells(l, 12).Formula  = "=" & Sheets("Sheet1").Cells(k + 12, 14).Address & "/1.35"

這應該工作:

Sub Temp2()
    Dim X As Long, ReadCol As Long, UpdateCode As Long
    ReadCol = 14
    UpdateCol = 12
    For X = 114 To 121
        Worksheets("Sheet2").Cells(X, UpdateCol).Formula = Worksheets("Sheet1").Cells(58 + ((X - 114) * 12), ReadCol) / 1.35
    Next
End Sub

我沒有要測試的任何示例數據,因此這是一個調試版本,它將輸出到立即窗口(CTRL-G),整行將其編譯為:

Sub Temp2()
    Dim X As Long, ReadCol As Long, UpdateCode As Long
    ReadCol = 14
    UpdateCol = 12
    For X = 114 To 121
        Debug.Print "Worksheets(""Sheet2"").Cells(" & X & ", " & UpdateCol & ").Formula = Worksheets(""Sheet1"").Cells(" & 58 + ((X - 114) * 12) & ", " & ReadCol & ") / 1.35"
    Next
End Sub

結果:

Worksheets("Sheet2").Cells(114, 12).Formula = Worksheets("Sheet1").Cells(58, 14) / 1.35
Worksheets("Sheet2").Cells(115, 12).Formula = Worksheets("Sheet1").Cells(70, 14) / 1.35
Worksheets("Sheet2").Cells(116, 12).Formula = Worksheets("Sheet1").Cells(82, 14) / 1.35
Worksheets("Sheet2").Cells(117, 12).Formula = Worksheets("Sheet1").Cells(94, 14) / 1.35
Worksheets("Sheet2").Cells(118, 12).Formula = Worksheets("Sheet1").Cells(106, 14) / 1.35
Worksheets("Sheet2").Cells(119, 12).Formula = Worksheets("Sheet1").Cells(118, 14) / 1.35
Worksheets("Sheet2").Cells(120, 12).Formula = Worksheets("Sheet1").Cells(130, 14) / 1.35
Worksheets("Sheet2").Cells(121, 12).Formula = Worksheets("Sheet1").Cells(142, 14) / 1.35

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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