类型不匹配可能是由于数组被误解

type mismatch probably due to array being missinterpreted

我从这段代码中发现类型不匹配,如果有人能提供帮助,我将不胜感激。这可能与我使用 split 命令的位置有关。我试图基本上抓取 A2 和 B2,然后是 A3 和 B3 等等...将其放入另一个程序 (Microstation)

Sub Main()

Dim Find_text() As Variant
Dim Replace_text() As Variant
Dim objExcelApp As Object
Dim wb As Object


     Set objExcelApp = CreateObject("Excel.Application")
     Set wb = objExcelApp.Workbooks.Open("My path")

     Dim ws As Object
     Set ws = wb.Sheets(1)


Find_text = Split(ws.Range("A2:A628"))
Replace_text = Split(ws.Range("B2:B628"))


CadInputQueue.SendKeyin "MDL KEYIN FINDREPLACETEXT,CHNGTXT CHANGE DIALOGTEXT"

For i = 0 To UBound(Find_text)

        CadInputQueue.SendKeyin "FIND DIALOG SEARCHSTRING " & Find_text(i)

        CadInputQueue.SendKeyin "FIND DIALOG REPLACESTRING " & Replace_text(i)

        CadInputQueue.SendKeyin "CHANGE TEXT ALLFILTERED"

Next

End Sub

问题出在这两行:

Find_text = Split(ws.Range("A2:A628"))
Replace_text = Split(ws.Range("B2:B628"))

ws.Range("A2:A628").Valuews.Range("B2:B628").Value 都不是字符串——因此您不能拆分它们。但是,您可以直接将它们分配给数组。

进行以下更改:

Dim Find_text As Variant '() not required
Dim Replace_text As Variant

...

Find_text = ws.Range("A2:A628").Value
Replace_text = ws.Range("B2:B628").Value

...

For i = 1 To UBound(Find_text)

        CadInputQueue.SendKeyin "FIND DIALOG SEARCHSTRING " & Find_text(i,1)

        CadInputQueue.SendKeyin "FIND DIALOG REPLACESTRING " & Replace_text(i,1)

        CadInputQueue.SendKeyin "CHANGE TEXT ALLFILTERED"

Next

当您将多单元格矩形区域的值分配给变体时,它会变成基于 1 的二维数组。这就是为什么循环现在以 1 开始以及为什么 Find_text(i) 必须替换为 Find_text(i,1)(对于 Replace_text 也是如此)。