我想实现一个代码,该代码引用当前文档中另一个工作表中的值,对这些值求和,并将加法限制为90,然后将它们减去存储在另一列中的一组值。我不断收到分配的属性的错误
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Long
Dim b As Long
Dim Filament As Integer
Dim Remaining As Integer
Dim sumRemaning As Integer
a = 1
b = 1
'Add loop here for Filament
For b = 1 To 10
Filament = Cells(Target.Row("A"))
sumRemaining = 0
Do While sumRemaining <= 90
a = a + 1
Remaining = Worksheets("Printer Log").Cells(a, 2)
sumRemaining = sumRemaining + Application.WorksheetFunction.sum(Remaining)
Loop
Cells(b, 3).Value = Filament - sumRemaining
Next b
End Sub发布于 2020-03-25 08:19:15
错误发生在以下行:
Filament = Cells(Target.Row("A"))原因是您试图将一个范围赋给一个整数;这是两种不同的数据类型。如果想要获得A列中所有值的总和,可以使用工作表sum函数(如下所示)。
下面的函数将:
私有子单元(Worksheet_Change目标作为范围) If (ByVal(3,2).Value = "") Then‘单元格C2。‘使用.Cell时,首先引用列,然后引用行。您可以用字符串值替换列整数,但效率较低。Dim iValue1 As Integer‘不要在整数变量的开头使用大写字母。按照惯例,变量以小写字母开头。Dim iValue2 As Integer Dim iResult As Integer iValue1 = iValue1‘您需要在此处使用Application.WorksheetFunction.Sum If (iValue1 > 90) Then = 90’确保A列的和不大于90。你不需要一个循环来做这件事。iValue2 = Sheets("Sheet2").Cells(2,1).Value iResult = (iValue1 - iValue2) Sheets("Sheet1").Cells(3,2).Value2 = iResult End If End
请注意,Sub的开头有一个求值条件;这可防止Sub重复运行。您可以这样做,然后单击单元格B3 (输出单元格)上的"clear contents“,使其再次运行。或者,您可以在工作表上创建一个按钮来触发此操作(推荐),而不是使用Worksheet_Change Sub。
希望这就是你要找的。如果您想从一个表中减去值,而不是从另一个表中减去值,那么只需交换变量即可。
https://stackoverflow.com/questions/60839818
复制相似问题