質問する

Revision history [back]

click to hide/show revision 1
最初のバージョン

この件。自己解決とは言い難いのですが、ヤフー知恵袋での質問(別件での質問ですが)に対して頂いた回答を見て気がついたことがあります。本当に初心者なので、以下は書くのも恥ずかしいのですが、お許しください。

気がついたのは、こんなあたりまえのことでした。
でも私みたいな初心者の多くは、同じ所で嵌ってしまう事があると思います。

Function を使用して独自関数を作る場合、
VBA画面でデバッグすることそのものがナンセンスである。

引数に関するエラーが出るのは当然である。

私は上記の事が理解できていなかったわけではなく。
理解していたのにも関わらず嵌ってしまいました。

Function で記載する独自関数なんだから、
引数なんて書きようがないのに、なんでエラーが出るの??

このエラーを回避する書き方ってどうすればいいの??

で、、ネットで調べまくっていました。
でも何処にもそれが書いてなくて、、嵌っていたのです。

おそらく誰も、こんなとこで躓く初心者がいるとは、
考えもしないのだと思います。

ヤフー知恵袋で頂いた回答を見て、
標準画面に戻ってやってみたら、、普通に動くではありませんか。。

自分はいったい、何をしていたのだと。。
しばらく自己嫌悪に襲われました。

冷静に振り返ってみて気がついたのですが、
エクセルでは、 Function で独自関数を書いた時は、
最初からデバッグできない仕様になっていた気がします。。

対してリブレでは、Function でもデバッグできちゃうので、
何も考えずに、そのままデバッグして悩んでいたわけです。

馬鹿です。私。

さらにもうひとつ。
自己嫌悪に追いやられる、唖然とすることがありました。

この式で私がしたかった事。というか、
エクセル2007の32bit版でやってた事は「文字列のURL化」です。

もともとエクセル2007には、そのような機能が無かったので、
VBAで独自関数を書いて使っていました。

ところが。。先程。。

リブレの関数には、
その為の関数が、最初から用意されていたことに気が付きました。

見てなかったのです。
やっぱり馬鹿です。私。

そもそも今回は、最初から壁にぶつかり続けてきました。
まず最初に、このコードの中にある、

Set 変換箱 = CreateObject("ScriptControl")
の中の
"ScriptControl"

でデバッグが止まってしまい、
何をやっても動いてくれなくて、ずぅ~っと悩んでいました。

そもそもエラーコードに記載されている文章の意味がわかりません。
ネットで調べても、何処にもわかりやすい説明がありません。

その原因が、最初に何も考えずにインストールした、
リブレの64bit版にあることに気がついたのは、2日後でした。

リブレの情報を探すのに疲れ果ててしまい、 何気なくエクセルの情報を眺めていたら以下が出てきたのです。

32bit版のエクセルで多用されている "ScriptControl"は、
64bit版のエクセルでは使えない。。

これを見た時、頭の中が凍りつきました。

そして、おそらくリブレもそうなんだろうと。。判断し、
32bit版をダウンロードして、入れ替えたのです。

いとも簡単に、デバッグはここを通過しました。
そして次に出てきたのが、

URL_住所 = 変換箱.CodeObject.escape(情報) *
のところで、

 
BASIC ランタイムエラー.
 
449'
 
引数は省略できません*
だったので、もう冷静さを失っていました。。

以上。報告でした。
ご迷惑を、おかけしました。

この件。自己解決とは言い難いのですが、ヤフー知恵袋での質問(別件での質問ですが)に対して頂いた回答を見て気がついたことがあります。本当に初心者なので、以下は書くのも恥ずかしいのですが、お許しください。

気がついたのは、こんなあたりまえのことでした。
でも私みたいな初心者の多くは、同じ所で嵌ってしまう事があると思います。

Function を使用して独自関数を作る場合、
VBA画面でデバッグすることそのものがナンセンスである。

引数に関するエラーが出るのは当然である。

私は上記の事が理解できていなかったわけではなく。
理解していたのにも関わらず嵌ってしまいました。

Function で記載する独自関数なんだから、
引数なんて書きようがないのに、なんでエラーが出るの??

このエラーを回避する書き方ってどうすればいいの??

で、、ネットで調べまくっていました。
でも何処にもそれが書いてなくて、、嵌っていたのです。

おそらく誰も、こんなとこで躓く初心者がいるとは、
考えもしないのだと思います。

ヤフー知恵袋で頂いた回答を見て、
標準画面に戻ってやってみたら、、普通に動くではありませんか。。

自分はいったい、何をしていたのだと。。
しばらく自己嫌悪に襲われました。

冷静に振り返ってみて気がついたのですが、
エクセルでは、 Function で独自関数を書いた時は、
最初からデバッグできない仕様になっていた気がします。。

対してリブレでは、Function でもデバッグできちゃうので、
何も考えずに、そのままデバッグして悩んでいたわけです。

馬鹿です。私。

さらにもうひとつ。
自己嫌悪に追いやられる、唖然とすることがありました。

この式で私がしたかった事。というか、
エクセル2007の32bit版でやってた事は「文字列のURL化」です。

もともとエクセル2007には、そのような機能が無かったので、
VBAで独自関数を書いて使っていました。

ところが。。先程。。

リブレの関数には、
その為の関数が、最初から用意されていたことに気が付きました。

見てなかったのです。
やっぱり馬鹿です。私。

そもそも今回は、最初から壁にぶつかり続けてきました。
まず最初に、このコードの中にある、

Set 変換箱 = CreateObject("ScriptControl")
の中の
"ScriptControl"

でデバッグが止まってしまい、
何をやっても動いてくれなくて、ずぅ~っと悩んでいました。

そもそもエラーコードに記載されている文章の意味がわかりません。
ネットで調べても、何処にもわかりやすい説明がありません。

その原因が、最初に何も考えずにインストールした、
リブレの64bit版にあることに気がついたのは、2日後でした。

リブレの情報を探すのに疲れ果ててしまい、 リブレの情報を探すのに疲れ果ててしまい、
何気なくエクセルの情報を眺めていたら以下が出てきたのです。

32bit版のエクセルで多用されている "ScriptControl"は、
64bit版のエクセルでは使えない。。

これを見た時、頭の中が凍りつきました。

そして、おそらくリブレもそうなんだろうと。。判断し、
32bit版をダウンロードして、入れ替えたのです。

いとも簡単に、デバッグはここを通過しました。
そして次に出てきたのが、

URL_住所 = 変換箱.CodeObject.escape(情報) *
のところで、

 
BASIC ランタイムエラー.
 
449'
 
引数は省略できません*
だったので、もう冷静さを失っていました。。

以上。報告でした。
ご迷惑を、おかけしました。