3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

引数の値が一致していません。または不正なプロパティを使用しています。

2010年12月24日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

ジーザス小川です。メリー・クリスマス。

みなさん、おめでとう。

今日は、僕が厩で生まれて、2011年目の記念日です ヾ(´ー`)ノ

\(o ̄∇ ̄o)/

\( ̄ー ̄ )ノ

\( ̄0  ̄;)ノ

(-_ -;)

そんなわけ、ないか ヾ(´ー`)ノ

まあ、そんなことはともかく。

大分から帰ってきました。

仕事たまりまくりで、帰宅したのは22時すぎだったにも関わらず、そのまま、夜中の1時半まで仕事。。。

そして、今朝は、6時半から仕事をしていました ヾ(´ー`)ノ

午前は、朝イチで銀行へ。

開店時間の9時より前に入れてもらって、ちょっと一仕事。

そして、そのあと、ikea港北店に行っていました。

..というか、今もまだikea港北店にいるのですが ヾ(´ー`)ノ

オフィス家具の買い付けでした。

「絶対安いから、行け!」という、経営コンサルタントをしている友人の助言を聞き入れ、来てみました。

すると…。

すっげー?!安い!うおー!

10月からはじまったという、オフィス家具の調度をデザイナーさんがしてくれるというサービスに申し込んでいたので、その担当者さんのお世話に。。。

朝の11時から、14時すぎまでの3時間、お昼ゴハンもなしで、びっちりと手伝っていただきました。

デザイナーさん、すっげー集中力。。。というか、心の平静様だったな。

僕もいったん集中すると、集中力がかなり持続するほうなんですが。

彼女にはシャッポを脱がされました ヾ(´ー`)ノ

最後のほうは、ヘロヘロになっていました。

無事に買うべき品が定まって倉庫にピッキングに行ったときには、大ケガを負いながら必死に逃走するゴルゴ13みたいになっていました (@_@;

まあ、そんなわけで。

今日は、さいきんいただいた質問から。

こんな質問が来ました。

小川先生

家で演習の復習をやっていたのですが、添付のファイルだけマクロが
コンパイルエラー 引数の値が一致しません。不正なプロパティを指定しています。

と表示されます。TRIMとREPLACE関数を記述すると必ず。
自分で作ったマクロも動かなかったので、回答のマクロを見て、それを走らせてみましたが
はしらないです。

どうしてですかね。どうしても意味がわからないので教えていただけないでしょうか?
ちなみに私はExcel2003のSP3を使用しています。

よろしくお願いいたします。

○○千晶

見てみると、問題の起こるサブプロシージャは、以下のような感じ。

Sub step1_replace()
    Dim basho As Long
    Dim myonam As String
    myonam = Range(“B2”).Value
    myonam = replace(myonam, “/”, ” “) ‘[※]
    basho = InStr(1, myonam, ” “)
End Sub

上記のマクロを実行しようとすると、以下のエラーメッセージが出る。

コンパイルエラー:
引数の値が一致していません。または不正なプロパティを使用しています。

さて、上記のマクロの、どこがおかしいのだろうか。。。

答え。

おかしいのは、上記のマクロではない。

実は、他のモジュール内に、以下のサブプロシージャがあった。

Sub replace() ‘←コレが元凶。
    Dim myonam As String
    Dim basho As Long
    Dim i As Long
    Dim cnt As Long
    i = Range(“B65536”).End(xlUp).Row
    For cnt = 2 To i
        myonam = Range(“B” & cnt).Value
        myonam = replace(myonam, “/”, ” “)
        basho = InStr(1, myonam, ” “)
        Range(“C” & cnt).Value = Left(myonam, basho – 1)
        Range(“D” & cnt).Value = Mid(myonam, basho + 1)
    Next
End Sub

VBAの既存の関数「replace」と同じ名前のサブプロシージャを作ってしまっていたようだ。

だから、前記[※]のところで言っている「replace」は、VBAの既存の関数「replace」ではなく、
このサブプロシージャ「rpelace」だった、というわけ。

中級者向けの説明になるが、このサブプロシージャ「replace」は引数を取らない。
だから、引数の数が一致しないという趣旨のエラーメッセージが出たのだ。

こういう問題か生じないようにするには、サブプロシージャの名前を、いかにもVBAのキーワードとして登場してきそうなものにしないこと。

ローマ字にするとか、英単語二つ以上をくっつけたような名前にすると、こういう問題はまず起こらない。

Sub ZenbuHenkan()

End Sub

とか

Sub ChangeAll()

End SUb

とか、そういう要領だ。

初心者のうちは、どうしても、こういう問題を起こしてしまいますね ヾ(´ー`)ノ

..と、いうことで。

朝からまるで住民のようにすごしている、ここikea港北店ですが。

そろそろ、でかけなくてはならないようです ヾ(´ー`)ノ

今日は、学生のころ参加していた東大の混声合唱団「東京大学柏葉会」の定期演奏会に行ってきます。

人見記念講堂に行くのは、3年ぶりくらいかと思います。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド