Excel VBA-从活动单元中减去variables

代码如下:

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 

我想要做的是:find正确的单元格(这个函数应该像我已经有的),select它并减去D3的值。 由于我对VBA很新,所以无法使代码正常工作。 任何提示,反馈或意见,欢迎和赞赏。 谢谢

这个答案在上面的评论中得到了回应,并且整理了一下。 (你的表名是否真的有空格?)

FindString的声明如OPbuild议的那样改变。 另外我把你的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