プロが教える店舗&オフィスのセキュリティ対策術

Excel VBAのユーザーフォームについて質問致します
別のExcelを編集中にユーザーフォームのマクロを起動したいのですが上手く行きません

マクロの内容は転記と出力です

他のExcelを作業中に起動すると
インデックスに有効範囲が有りませんとエラーが出ます

どの様に設定すれば宜しいでしょうか

それと、ユーザーフォームにExcelの最小化ボタンを作りたいのですが作り方とコードが分かりません
宜しければこちらも教えて頂けないでしょうか

よろしくお願いします

A 回答 (4件)

#3さんのおっしゃる通りなのですが……。


Application.WindowState = xlMaximized

確かに、そのとおりなのですが、それはなかなか手が出しにくいのです。
よく、VB6のプログラマーさんたちが、この方法をされていましたし、FOMのテキストにも出てきましたので、私も書いたことはあります。

ところが、UserForm を利用している時には、致命的なエラーを発生することがあります。そもそもが、UserFormのオブジェクト(DataObject)は、脆弱のようです。

どうやら、手順そのものの問題のようで、子(UserForm)から、親(本体)に指示を出すと、親が機嫌を損ねることがある、というように解釈していました。

私は、何度か、Excelが突然なくなる現象があってからは、UserForm を出している状態では、アプリ全体のオブジェクトへの処置というものをしなくなったのです。

今、Excelは2013以降、SDIになってからは、かつての問題を引きずっていないような気もします。もし、何かあったら、私の話を思い出していただけたらと思っています。

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
    • good
    • 0

Application.WindowState = xlMaximized


こっちじゃないのかな?
ま、五分五分かも。何しろ・・・
    • good
    • 0

最初に、VBAマクロは、プログラムで、コードなくして、それを言い当てるのは大変に難しいことだということをおわかりください。



>インデックスに有効範囲が有りませんとエラーが出ます
基本的には、編集や利用しようとしているオブジェクトの名称やインデックスにはないものを示しているということです。
(これが答ですが、そうと言われて分かりますか?)

つまり、以下のコードでも判ると思いますが、VBAの処理は、Excelは、存在しないオブジェクト(シートやブック)を指して、命令されても、それはありませんと言っているわけです。

>ユーザーフォームにExcelの最小化ボタンを作りたいのですが作り方とコードが分かりません

Application.Windows("Book1.xlsm").WindowState = xlMinimized
    • good
    • 0

>他のExcelを作業中に起動すると


>インデックスに有効範囲が有りませんとエラーが出ます

エラーが出た行は認識できていますか?

その前に「インデックスが有効範囲にありません」
ですよね。
プログラムは1文字の間違いも許してくれませんので
その心づもりで、メッセージも正しく伝えてくださいね。

インデックスが有効範囲にないというのは
複数要素を持つオブジェクト(それが何かはプログラムを
見ないと判らないです。とにかくエクセルを構成している何かです)
に存在しない名前や番号で(例えば5個しかないのに7番を指定したとか)
複数のうちの一つを指定しようとした、そういうエラーになります。

要はコードを示さないと、それ以上の何も申し上げられる事がないんです。


>ユーザーフォームにExcelの最小化ボタンを作りたいのですが作り方

自分で何もせずに聞くのは失礼ですよ。
他にも多数ありますが、最低下記を読めばある程度の
ユーザーフォームは試せるはず。ここまでやったけど
判らない点があって進めないというのなら訊いてください。
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …

その苦しむ過程でこそ、実力になるんです。何もせずに全部聞いたって
右から左に抜けるだけ、お互いに時間の無駄になってしまいます。

>コードが分かりません
最小化はマクロの記録でたった1行です。
それが出来ないようなら、適正が欠けてると認識された方が・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!