代码之家  ›  专栏  ›  技术社区  ›  Newbie

Excel VBA-从活动单元格中减去变量

  •  0
  • Newbie  · 技术社区  · 7 年前

    代码如下:

    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
    

    欢迎提供任何提示、反馈或意见。

    1 回复  |  直到 7 年前
        1
  •  2
  •   SJR    7 年前

    FindString的声明按照OP的建议进行了更改。我还将整数改为Long,这是一个很好的做法(谷歌搜索它以获取详细信息)。

    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