|
すでに適切なコメントをいただいています。
遅ればせながら追加コメントをします。
>MATCH関数に対応するVBの関数は何でしょうか?
そういうVBの関数はありません。
VBAの中でMatch関数を使えるようにしたものが、
(Application.)WorksheetFunction.Matchです。
Applicationは省略することが多いですね。
下記を参照。
ht tps://www.moug.net/tech/exvba/0100035.html
↑スペースを詰める。
--------------------------------------
最初の質問への回答の補足。
> k = Worksheet.Match(sheetName, activesheet.Range("Q8:Q14"), False, 0)
Worksheet.Matchのところですが、
(1)Worksheetオブジェクトのつもりだとして、
単にWorksheetと書くことは無いと思って頂いて結構です。
Worksheets("Sheet1")
Worksheets(1)
などと書くことが多いです。
(2)重要なのは、Worksheetオブジェクトのつもりだとして、
Worksheetオブジェクトは、Matchというメソッド、プロパティは持ちません。
オブジェクト - メソッド
オブジェクト - プロパティ の組み合わせは決まっており、
自分で勝手に追加することはできません。
そういう正当な組み合わせであるかどうかに気をつけることが大切です。
ヘルプで調べたり、最初は例文を一部を変えて使ってみるという経験を
積み重ねることが必要でしょう。
---------------------------------------
また、
Option Explicit
をモジュールの一行目に挿入するようにして下さい。
そうすれば、今回のような未宣言の変数には警告が出て、
しかも場所を特定してくれますから、原因が直ぐに判明します。
今回の例で言えば、Worksheetがハイライトされ、
「変数が定義されていません」とエラーになるはずです。
Excel君は、ユーザーが使った変数と見なし、
その宣言がされていないと指摘しています。
ミスの早期発見につながります。
なお、
ツール − オプション − 編集 で
「変数の宣言を強制する」にチェックを入れておけば、
モジュールを作成した時点で、Option Explicitが自動的に挿入されるので、
手間が省けます。
一度だけチェックを入れておけば、以後、気にする必要はありません。
これは必ず実行してください。参考程度の聞いて貰っては困ります。
ht tp://officetanaka.net/excel/vba/beginner/06.htm
を参照。
|
|