首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >极限求和和减法

极限求和和减法
EN

Stack Overflow用户
提问于 2020-03-25 05:44:59
回答 1查看 50关注 0票数 0

我想实现一个代码,该代码引用当前文档中另一个工作表中的值,对这些值求和,并将加法限制为90,然后将它们减去存储在另一列中的一组值。我不断收到分配的属性的错误

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-03-25 08:19:15

错误发生在以下行:

代码语言:javascript
复制
Filament = Cells(Target.Row("A"))

原因是您试图将一个范围赋给一个整数;这是两种不同的数据类型。如果想要获得A列中所有值的总和,可以使用工作表sum函数(如下所示)。

下面的函数将:

  • 从Sheet1 (IValue1)获取A列中的所有值

  • 从Sheet2 (iValue2)

  • subtract获取单元格Sheet2中的值iValue2从iValue1

  • 获取结果并将其输出到Sheet1上的单元格B3。

私有子单元(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。

希望这就是你要找的。如果您想从一个表中减去值,而不是从另一个表中减去值,那么只需交换变量即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60839818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档