2

ワークシート関数「左」を「検索」と組み合わせて使用​​して、VBA の文字列変数を決定しようとしています。ただし、Excel は find 関数を VBA 関数として解釈するため、解決時にエラー メッセージが表示されます。

私のコードの下:

...
Else
    MSa = MSa & Left(Range("D22"), Find(".", Range("D22")) - 1) & " " & Range("D25").Value & "."
    Range("Q7").Value = MSa
End If
...

MSa は文字列です。この問題を解決する最善の方法を教えてください。

よろしくお願いします。

4

3 に答える 3

5

簡単な答えは、使用することApplication.WorksheetFunction.Findです。しかし、私はそれを使用しません。以下をお読みください。

そのため、Sheet1 でabc.defセル A1 に入ります。
別のセルに値を入力=LEFT(A1,FIND(".",A1)-1)して取得しますabc

VBA で同じ関数を呼び出すには、次のように記述します。

variable = Left(Sheet1.[A1],Application.WorksheetFunction.Find(".",Sheet1.[A1])-1)

ただし、VBA から Excel ワークシート関数を呼び出すと、いくつかの欠点があります (デバッグが難しく、処理が遅くなります)。ワークシート関数 Find と同じように機能するネイティブ VBA 関数 InStr を使用することをお勧めします。パラメータの順序は異なりますが、結果は同じです。だから私は書くだろう

variable = Left(Sheet1.[A1],InStr(Sheet1.[A1],".")-1)
于 2013-08-20T16:56:31.937 に答える
1

InStr メソッドは、使用するワークシート関数 Find と同等です。

MSa = MSa & Left(Range("D22"), InStr(Range("D22"), ".") - 1) & " " & Range("D25").Value & "."
于 2013-08-20T17:01:42.527 に答える