Excel 为什么我的VBA代码(如下)不工作,引用是否有问题?
代码功能概述:Excel 为什么我的VBA代码(如下)不工作,引用是否有问题?,excel,vba,memory-leaks,Excel,Vba,Memory Leaks,代码功能概述: 上面的代码从sheet1复制项目名称,并在sheet2中查找它。如果找到该项目,它将复制项目名称后4列的项目成本,并将该成本粘贴到其相应项目旁边的sheet1中 问题: 它正确地将前几个值放置在sheet1中,但之后崩溃。没有错误,只需从表2中选取错误的值并放置在表1中即可。可能会发生什么 您有一大堆。选择调用,这可能会导致混淆,以及臭名昭著的调用 相反,重做它以避免这些问题。注:根据需要更改图纸名称 Sub rs() Dim i As Integer Dim r
上面的代码从sheet1复制项目名称,并在sheet2中查找它。如果找到该项目,它将复制项目名称后4列的项目成本,并将该成本粘贴到其相应项目旁边的sheet1中 问题:
它正确地将前几个值放置在sheet1中,但之后崩溃。没有错误,只需从表2中选取错误的值并放置在表1中即可。可能会发生什么 您有一大堆
。选择调用,这可能会导致混淆,以及臭名昭著的调用
相反,重做它以避免这些问题。注:根据需要更改图纸名称
Sub rs()
Dim i As Integer
Dim randomVar As Variant
Dim ra As Variant
'Set ra = New Range
For i = 4 To 30
If IsEmpty(Range("B" & i).Value) = True Then GoTo line1
Range("B" & i).Select
randomVar = ActiveCell.Value 'stores name of project to be found in another worksheet
Sheets("Sheet2").Select
Set ra = Cells.Find(randomVar) 'finds project name
If ra Is Nothing Then GoTo line1 'if not found continue for loop
ra.Offset(columnOffset:=4).Copy 'copies found project's cost that is 4 colums right to the project name
Sheets("Sheet1").Select
Range("F" & i).Select
ActiveSheet.Paste 'pastes the cost of the project from other sheet
line1:
Next i
End Sub
那么它是崩溃了(Excel停止工作)还是只是没有做你想让它做的事情?这些都是完全不同的事情。@Prarabdha-巧合的是(或不是),这也是一个让你复习的好机会。看看您的代码,看看您是否可以按照我解析代码的逻辑直接处理数据。另外一个好处是,您可以看到如何重新工作循环,以避免使用GoTo
调用。谢谢,我来看看
Sub rs_two()
Dim i As Long
Dim randomVar As String
Dim ra As Range
For i = 4 To 30
If Not IsEmpty(Sheets("Sheet1").Range("B" & i).Value) Then
randomVar = Sheets("Sheet1").Range("B" & i).Value
Set ra = Sheets("Sheet2").Cells.Find(randomVar)
If Not ra Is Nothing Then
ra.Offset(0, 4).Copy Sheets("Sheet1").Range("F" & i)
End If
End If
Next i
End Sub