由于Dim

时间:2015-05-05 15:49:41

标签: excel excel-vba vba

我正在慢慢建立这个代码,因为我想学习VBA以备将来使用。我的代码的这一部分的目的是查看一个单元格的值是否包含在同一工作簿单元格中的另一个工作表中。如果这是真的,那么我想将工作表中的同一行的第10列(" FDSA")标记为" ok"如果不是,就什么都不写。

Sub test1()

Dim Str As String
Dim Search As String

Str = Cells(2, 5).Value
Search = Worksheets("FDSA").Cells(2, 5).Value


    If InStr(Search, Str) > 0 Then
        Worksheets("FDSA").Cells(2, 10).Value = "ok"
    End If

End Sub

昨天我得到了一个很有帮助的答案(上)。我现在正在尝试为该代码创建一个循环。现在是(底部)。

Sub test1()

For X = 2 To 5
For Y = 2 To 5

Dim Str As String
Dim Search As String

Str = Cells(X, 5).Value
Search = Worksheets("FDSA").Cells(Y, 5).Value


    If InStr(Search, Str) > 0 Then
        Worksheets("FDSA").Cells(Y, 10).Value = "ok"

    Else
        Worksheets("FDSA").Cells(Y, 10).Value = ""

    End If

Next Y
Next X

End Sub

我进行了一项测试,看看它是否有效,但事实并非如此。我做了它,以便单元格(5,5)不包含在工作表内(" FDSA")。单元格(Y,5),它仍然写好了。经过一些研究后我得出结论,Dim存储可能是问题(它使用的是匹配的首字母的值)。我尝试使用ReDim并清除但无法运行代码。感谢您的帮助,如果您需要更多解释,请与我们联系。

-Alexis M。

1 个答案:

答案 0 :(得分:1)

我认为你只想要一个循环:

Sub test1()
Dim Str As String
Dim Search As String
Dim X as Long

For X = 2 To 5

Str = Cells(X, 5).Value
Search = Worksheets("FDSA").Cells(X, 5).Value


    If InStr(Search, Str) > 0 Then
        Worksheets("FDSA").Cells(X, 10).Value = "ok"

    Else
        Worksheets("FDSA").Cells(X, 10).Value = ""

    End If

Next X

End Sub