ジーザス小川です。メリー・クリスマス。
みなさん、おめでとう。
今日は、僕が厩で生まれて、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年ぶりくらいかと思います。