【问题标题】:Use a For to move from cells使用 For 从单元格中移动
【发布时间】:2024-05-20 14:25:01
【问题描述】:

我在宏中需要的是:从工作表(例如:W1)中选择一个整个单元格,结果将其粘贴到另一个工作表(W2)单元格(A1)中,然后选择另一列 W1 并将其相加并粘贴它在A2等等。 我写的是:

Sub SumasTbf() 
Dim Seleccion As Range 
Dim Suma 


Worksheets("hoja2").Activate 
Set Seleccion = Range(ActiveSheet.Range("B1"), ActiveSheet.Range("B1").End(xlDown)) 
Suma = WorksheetFunction.Sum(Seleccion) 
Worksheets("hoja3").Range("F1") = Suma

现在我正在考虑使用 FOR 将范围 B1 移动到 C1,但我不知道如何将 B 移动到 C,请您帮帮我!如果使用行,它将是 "B"& x ?? (另一个问题)...等待答案

【问题讨论】:

  • 你在做什么?微软Excel?

标签: string excel vba variables for-loop


【解决方案1】:

这应该可行:

Sub SumasTbf()
Dim myRange As Range
Dim Suma As Long, lastRow As Long, i as Long

For i = 2 To 10 'This will loop from column B to J
    With Worksheets("hoja2")
        lastRow = .Cells(1, i).End(xlDown).Row
        Set myRange = .Range(.Cells(1, i), .Cells(lastRow, i))
        Suma = WorksheetFunction.Sum(myRange)
    End With

    'Now, let's record the sum in A1, then A2, etc.
    ' use i-1 since i starts at 2
    Worksheets("hoja3").Cells(i - 1, 1) = Suma
Next i
End Sub

主要是,当想要迭代范围时,您可以使用Range(Cells([row #],[column #]),Cells([row #],[column #]))。然后只需使用一个变量循环(i)。

另外,我更改了seleccion,因为我认为这也是 VBA 使用活动选择的方式。我把它改成了myRange,所以没有潜在的混淆。

【讨论】: