[[20190811123951]] 『Find やCHARのコンバイルエラー』(マリ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Find やCHARのコンバイルエラー』(マリ)

初心者です。
よろしくお願いします。

find やCHARを使うと、コンパイルエラー subまたはfunctionが定義されていませんとでます。
多分、何か指定しなければならないと思いますが、いろいろ調べましたが、全然わかりません。

例のコードを記載します。
A4の一つ目の改行までの文字列を取得し、Cells(1, 4) に入れます。


Sub Macro3()

Dim r As String

r = Left(A1, Find(CHAR(10), A1) - 1)

Cells(1, 4) = r

End Sub


Sub Macro3()の所が黄色になり、CHARが黒反転します。

その他に、CHARは使わず、Findのみを使った別の式でも、Sub Macro3()の所が黄色になり、Findが黒反転します。

よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 シート関数のFind に近いのは InStr, CHAR関数はChr

 r= Left(Range("A1").Value, InStr(Range("A1").Value, Chr(10))-1)
(seiya) 2019/08/11(日) 13:30

Chr(10)でもよいですし、vbLfという定数を使うのもよいと思います。

そのほか
Option Explicit
をモジュールの一行目に挿入するようにして下さい。
そうすれば、今回のような未宣言の変数(A1のこと)には警告が出て、
しかも場所を特定してくれますから、原因が直ぐに判明します。

http://officetanaka.net/excel/vba/beginner/06.htm

なお、
ツール − オプション − 編集 で
「変数の宣言を強制する」にチェックを入れておけば、
モジュールを作成した時点で、Option Explicitが自動的に挿入されるので、
手間が省けます。
一度だけチェックを入れておけば、以後、気にする必要はありません。
(γ) 2019/08/11(日) 13:54


ありがとうございました。
seiyaさんに、ご呈示いただいた式でできました。
Findはシート関数なので、vba用の関数にしないと使えないのですね。
本当に初歩の事ですが、助かりました。

(γ)さんも、vbLf定数についてや、「変数の宣言を強制する」にチェックについても教えていただきありがとうございました。早速チェックを入れました。

御親切に、いろいろ教えていただきありがとうございました。
これで進めて行けます。
また、何かありましたら、よろしくお願いします。

(マリ) 2019/08/11(日) 14:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.