1

我从这段代码中得到了类型不匹配,如果有人能提供帮助,将不胜感激。它可能与我使用 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
4

1 回答 1

4

问题在于这两行:

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)(和类似的 for Replace_text)。

于 2017-03-21T17:41:00.727 回答