这个非循环代码执行没有问题:
If InStr(1, Sheets(1).Range("A1"), "blah") > 0 Then
Sheets(2).Range("A1") = Sheets(1).Range("B1")
End If
但我需要迭代几行;因此,一个循环:
Dim i As Integer
For i = 1 To 10
If InStr(1, Sheets(1).Cells(i, 1), "blah") > 0 Then
Sheets(2).Cells(i, 1) = Sheets(1).Cells(i, 2)
Else Sheets(2).Cells(i, 1) = ""
End If
Next
循环编译并且不会崩溃,但无法返回任何输出。为什么呢?
答案 0 :(得分:2)
在instr公式中添加1和0
Instr(1, Sheets(1).Cells(i,1), "blah") > 0
另外,您确定Sheets(2)
的值是要更改的值吗?
答案 1 :(得分:2)
这应该有效。还注意到您正在引用单元格而不是单元格中保存的值
***注意这是调试的垃圾方式但是...... msgbox提示符是什么意思?应该说0或1,第二个msgbox应该告诉你将在第二张表中放入什么。再来一次这是一个完全废话的方式来调试
Sub Test()
Dim iVal As Integer
For i = 1 To 10
iVal = InStr(1, Sheets(1).Cells(i, 2), "blah")
MsgBox CStr(iVal)
If iVal > 0 Then
'go to second sheet column 1 and enter in the value thats in the 2nd column on sheet 1
MsgBox "Adding to Sheet 2: " & Sheets(1).Cells(i, 2).Value
Sheets(2).Cells(i, 1).Value = Sheets(1).Cells(i, 2).Value
End If
Next
End Sub
答案 2 :(得分:1)
如果你教男人钓鱼......这不是答案,但你如何能够自己解决问题:
将光标放在下面一行,然后按F9。
,在代码中添加一个断点 Sheets(2).Cells(i, 1) = Sheets(1).Cells(i, 2)
如果你做得对,那么你会在VBE中看到它:
按F5键运行代码。
当它/如果击中线时,VBE将突出显示该线为黄色。这基本上会暂停代码执行,因此您可以检查&追踪正在发生的事情。以下是您可以输入Debug.Print
语句(或MsgBox
根据我的示例和上面的SOrceri示例)或者您可以使用 Immediates 窗口或本地窗口检查变量&他们的价值观(这是更先进的)。
如果“没有”发生(即,线条从未突出显示为黄色),我只能想到两件事。
Sheets(1).Cells(i,2)
为空,或断点将允许您调试并找出哪些(或者我没有想到的潜在其他条件)可能导致明显的“错误”。
更新不幸的是,我认为问题确实是你的逻辑。我将尝试提供一个尽可能明确的示例。
Sub Test()
Dim i As Integer
Dim sht1Cell As Range
Dim sht2Cell As Range
For i = 1 To 10
Set sht1Cell = Sheets(1).Cells(i, 1)
Set sht2Cell = Sheets(2).Cells(i, 1)
'Now, test whether "blah" is found in sht1Cell:
If InStr(1, sht1Cell.Value, "blah") > 0 Then
'If it contains "blah", then put this value in sheet 2.
'Note: you were previously putting values from Column B.
' but this is taking the exact cell value from
' column A, so I KNOW this value cannot be a blank value.
sht2Cell.Value = sht1Cell.Value
Else:
'Does not contain "blah", so make sheet 2 have a blank
'This blanks out any value that might have previously been
'present in sh2Cell.
sht2Cell.Value = ""
End If
Next
End Sub
如果这没有达到预期的效果,我100%肯定你的逻辑中存在问题,而这个问题并没有充分描述你希望实现的条件和结果。除非你能更全面地描述你想要做的事情,否则它有所不同,是否有人猜测。