我试图创建一个VBA代码,每隔一行乘以1.05的行,没有空单元格在列M和这里是我想出了(这是从10开始)
但是,它返回类型不匹配错误。
Sub MultiplyEverySecondRow()
Dim lastRow As Long
Dim i As Long
lastRow = Cells(Rows.Count, "M").End(xlUp).Row
For i = 11 To lastRow Step 2
Range("Q" & i & ":BC" & i).Value = Range("Q" & i & ":BC" & i).Value * 1.05
Next i
End Sub
4条答案
按热度按时间exdqitrt1#
使用数组进行操作并将其写回工作表将快得多:
此外,您应该避免隐式引用,因此我添加了变量
ws
w41d8nur2#
您希望乘以每个单元格值,而不是整个范围。看看下面的代码:
yr9zkbsy3#
如果
Range
是一个多单元格区域,则.Value
返回一个二维数组。你不能用一个数字乘以整个数组。你必须遍历该范围内的所有单元格,并分别乘以每个单元格。还要注意检查列M中的单元格是否不为空的条件。您还应该养成使用工作表限定所有范围的习惯(请参阅下面的
With
语句)。将Sheet2
更改为正在处理的图纸的名称。尝试以下操作:
fhity93d4#
第N行相乘
数组
评估
Evaluate
来实现:With
语句将使其更具可读性: