【问题标题】:Excel VBA- Subtracting Variable from Active CellExcel VBA-从活动单元格中减去变量
【发布时间】:2017-10-02 18:17:34
【问题描述】:

代码如下:

Sub Minus()
Dim numsub As Integer
If (D3 <> "") Then
    numsub = Worksheets("Inventario 31-12-2015 ").Range("D3").Value
    Dim FindString As Integer
    Dim Rng As Range
    FindString = ActiveWorkbook.Worksheets("Inventario 31-12-2015 ").Range("C3").Value
        With Sheets("Inventario 31-12-2015 ").Range("C25:C")
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        End With
        If Not Rng Is Nothing Then
            Application.Goto Rng.Offset(0, 4), True
            ActiveCell.Value = ActiveCell.Value - numsub
        End If
End If
End Sub

我要做的是:找到正确的单元格(这个函数应该像我已经拥有的那样工作),选择它并减去 D3 的值。由于我对 VBA 非常陌生,因此无法使代码正常工作。 欢迎和赞赏任何提示、反馈或 cmets。 谢谢

【问题讨论】:

  • 你应该在 If 语句中命名你的范围 If Range("D3") &lt;&gt; "" Then
  • if 语句中的 D3 被视为变量。您的意思是将其用作单元格引用吗?
  • 另外,这个.Range("C25:C") 好像少了一个数字。
  • 您知道Dim FindString As Integer 表示您无法查找带小数的值...?

标签: vba excel excel-formula subtraction


【解决方案1】:

这个答案在上面的 cmets 上得到了认可,并对其进行了一些整理。 (您的工作表名称末尾真的有空格吗?)

按照 OP 的建议更改了 FindString 的声明。此外,我将您的 Integer 更改为 Long,这是一种很好的做法(Google 了解详情)。

Sub Minus()

Dim numsub As Long
Dim FindString As String
Dim Rng As Range

With Worksheets("Inventario 31-12-2015 ")
    If .Range("D3") <> vbNullString Then
        numsub = .Range("D3").Value
        FindString = .Range("C3").Value
        With .Range("C25:C100") 'change 100 to suit
            Set Rng = .Find(What:=FindString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
        End With
        If Not Rng Is Nothing Then
            Application.Goto Rng.Offset(0, 4), True
            Rng.Offset(0, 4).Value = Rng.Offset(0, 4).Value - numsub
        End If
    End If
End With

End Sub

【讨论】:

  • 认为您现在可以编辑它了:Application.Goto Rng.Offset(0, 4), True
  • @QHarr - 可以,但如果 OP 想要它不会造成任何伤害。
  • 确实如此。
  • 是的,但我没有制作原始表格:)
  • thx 作品完美但必须改变一件事。 “FindString”现在定义为字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 2012-01-18
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多