1 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:36:18.78 ] 01 pc11.2ch.net/test/read.cgi/tech/1054356121/ 02 pc11.2ch.net/test/read.cgi/tech/1168308855/ 03 pc11.2ch.net/test/read.cgi/tech/1180192018/ 04 pc11.2ch.net/test/read.cgi/tech/1189814602/ 05 pc11.2ch.net/test/read.cgi/tech/1197448064/ 06 pc11.2ch.net/test/read.cgi/tech/1205231499/ 07 pc11.2ch.net/test/read.cgi/tech/1212587819/ 08 pc11.2ch.net/test/read.cgi/tech/1219673793/ 09 pc11.2ch.net/test/read.cgi/tech/1228372971/ 10 pc12.2ch.net/test/read.cgi/tech/1235332603/ 11 pc12.2ch.net/test/read.cgi/tech/1241885130/ 12 pc12.2ch.net/test/read.cgi/tech/1247566074/ 13 pc12.2ch.net/test/read.cgi/tech/1254281104/ 14 pc12.2ch.net/test/read.cgi/tech/1262748898/ 15 pc12.2ch.net/test/read.cgi/tech/1271261239/ 16 hibari.2ch.net/test/read.cgi/tech/1280045912/ 17 hibari.2ch.net/test/read.cgi/tech/1289182437/ 18 hibari.2ch.net/test/read.cgi/tech/1298240666/ 19 hibari.2ch.net/test/read.cgi/tech/1305754555/ 20 hibari.2ch.net/test/read.cgi/tech/1312435844/ 前スレ: Excel VBA 質問スレ Part21 hibari.2ch.net/test/read.cgi/tech/1316931607/
321 名前:デフォルトの名無しさん [2011/12/18(日) 16:51:48.87 ] Application ActiveWindow Application.ActiveWindow この違いはなんなのでしょう? 誰か違いのわかる男(あるいは女)はいますか?
322 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:41:31.56 ] 字数が異なります
323 名前:321 [2011/12/18(日) 17:50:13.70 ] ふざけるな
324 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 17:58:43.06 ] >>321 前提として ApplicationはExcel自体 WindowはExcel内の子ウィンドウで、Book などに対応して作成される Excelを起動すると、Applicationオブジェクトが作成される Bookを作成すると、Applicationオブジェクト配下に、WorkbookオブジェクトとWindowオブジェクトが作成される もう一つBookを作成すると、Applicationオブジェクト配下に、別のWorkbookオブジェクトと別のWindowオブジェクトが作成される workbookは文書内容そのものを保持し、Windowはドキュメント内容以外の状態や表示設定(Book単位のActiveCellや画面の拡縮率など)を保持する ActiveなBook(ActiveWorkbook)を切り替えると、ApplicationオブジェクトのActiveWindow、ActiveCell、ActiveChartなども一式自動的に切り替わる で、 Application は、ActiveSheet.Applicationの省略形で、Excel全体を表すApplicationオブジェクトを指す Application.ActiveWindowは、Excel内のアクティブなWindowオブジェクトを指す(workbookを切り替えるとWindowオブジェクトも切り替わる) ActiveWindow は、Application.ActiveWindow の省略形で、Application.ActiveWindow と同じ おそらく内部では、 Application.ActiveCell を参照したとき、Application.ActiveWindow.ActiveCell を返すような実装になってるはずなので、 ActiveCell Application.ActiveCell ActiveWindow.ActiveCell Application.ActiveWindow.ActiveCell の4つは常に同一になるはず
325 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 18:32:16.70 ] 2つのオブジェクトが同一かどうか調べる方法ってあるのかな? たとえば Set ObjA = ActiveCell Set ObjB = Application.ActiveWindow.ActiveCell If ObjA = ObjB Then … みたいな感じで
326 名前:321 [2011/12/18(日) 18:42:08.92 ] >>324 ご丁寧なご説明ありがとうございます。 かなりわかってきたような気がします。 >>322 のアホとは違いますね。 つこてる豆が違います。 こういう基本的とも思えることまで解説した本などがあればいいのにね。
327 名前:デフォルトの名無しさん [2011/12/18(日) 19:02:29.27 ] >>325 実際に試したら 書いているとおりのコードで調べることができましたよ。 Sub Test() Dim objA As Object Dim objB As Object Set objA = ActiveCell Set objB = Application.ActiveWindow.ActiveCell If objA = objB Then Stop '<=ここで止まった。 End If End Sub
328 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 19:06:04.93 ] "つこてる豆が違います" の検索結果が見つかりませんでした。 つ こ てる 魔 眼 が 違います の検索結果を表示しています。 Bingワロタw
329 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:41:28.74 ] なぞなぞ Debug.Print ActiveCell Is ActiveCell の結果はFalse。さて理由は?
330 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 20:52:33.37 ] >>327 ダウト。これ試してみ Sub Test() Dim objA As Object, objB As Object Set objA = Range("A1") Set objB = Range("B2") If objA = objB Then Debug.Print "同じ" End Sub
331 名前:327 [2011/12/18(日) 21:22:50.30 ] >>330 If objA = objB Then でレンジを入れたオブジェクト変数を比較すると、 objAとobjBのValueで比較するみたいですね。 上記コードに else Debug.Print "違う" を付け加えて、セルに違う値入れて実行したら"違う"になりました。 あとは例えば比較対象をobjA.AddressとobjB.Addressにすると"違う"と判別されましたし、 A1とB2で書式設定を違うものにしたら objA.NumberformatとobjB.Numberformatの比較も"違う"という結果になります。
332 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:29:46.45 ] >>329 ひょっとして、 ActiveCellが返すRangeオブジェクトは現在の選択座標をもとに都度新規に作成されるとかそういう話?
333 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:34:17.84 ] それを言うなら Range("A1") Is Range("A1") もFalseだね
334 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 21:39:41.65 ] >>329 これ前から謎だったんたよな 正解を教えてくれると助かる で自分なりに出した答えは セルの参照先は一緒だけどRangeオブジェクト(インスタンス?)が違うから 下と同じ原理かなと思う Set objA = Range("A1") Set objB = Range("A1") Debug.Print objA Is objB Set objA = Range("A1") Set objB = objA Debug.Print objA Is objB 前者はFalse だけと 後者はTrue
335 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 22:45:17.52 ] ヒント Set objA = Worksheets(1) Set objB = Worksheets(1) Debug.Print objA Is objB これはTRUE
336 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:16:30.48 ] うわあ・・・
337 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:22:59.09 ] 別のプロシージャに配列渡してその値変えたら元も変わる?
338 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:25:51.03 ] ちょっと試せばすぐにわかるのに
339 名前:334 mailto:sage [2011/12/18(日) 23:27:21.13 ] >>335 これは シートオフジェクトは最初からあるからだったりするのか? VBEでみるとシートオフジェクトが見えるし
340 名前:334 mailto:sage [2011/12/18(日) 23:30:23.28 ] シートオフジェクト ってなんだよ(笑) シートオブジェクト だった
341 名前:デフォルトの名無しさん mailto:sage [2011/12/18(日) 23:33:39.87 ] VBAからVBEのユーザーフォームデザイン編集画面でツールボックスを右クリックして「その他のコントロール」を選択した時にでるダイアログの 「利用可能なコントロール」を制御する事は可能ですか? 制御は出来なくても利用可能か調べたりチェックされているかどうか調べる方法でも良いです
342 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 00:01:49.44 ] >>338 あなたのVBA力と回答力を試しているんですが
343 名前:デフォルトの名無しさん [2011/12/19(月) 02:24:24.73 ] VBAでIEのHTML表示領域の幅と高さを調べたいのですが どうすればよいでしょうか? HTMLDocument の HeightやWidthですと IEのウインドウ幅と高さの取得になってしまいます。
344 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:30:36.62 ] tree viewを使用し、配列gets(n,m)のツリーを作成しようと思ったのですが n = 0 m = 0 Do While gets(n, m) <> "" thttp = gets(n, 0) '親カテゴリ TreeView1.Nodes.Add , , thttp, thttp, "oya" m = 1 Do While gets(n, m) <> "" sthttp = Split(gets(n, m), "/") '子カテゴリFormat = KEY/TITLE TreeView1.Nodes.Add thttp, tvwChild, sthttp(0), sthttp(1), "child" m = m + 1 Loop n = n + 1 m = 0 Loop gets(n,m)はm=0が親カテゴリ m>0が子カテゴリで 親カテゴリ(n,0)は 単語 が格納されて、子カテゴリ(n,m)m>0には KEY/単語 が格納されています 空白の要素を余分に持っているため <> "" で飛ばしています 親カテゴリ(n,0)の要素が空白になった時終了するようにしているのですが 実行すると実行エラー35602 "Key is not unique in collection"と出てツリーが作成できません
345 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 02:46:08.20 ] 同じkeyが指定されてるんじゃね
346 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:14:42.05 ] keyは親子の関係なく 一意でないと いけなかったと思ったけどそうなってる?
347 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:20:57.96 ] >>345-346 ご指摘通りでした 配列の内容を見直しましたところ同じKEYの物がありました ありがとうございます
348 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 03:34:19.11 ] >>343 scrollHeight, scrollWidth
349 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 04:23:13.62 ] >>343 表示領域とは? >>348 以外に ClientWidth ClientHeight もあるが
350 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 09:29:22.69 ] >>334 Isってメモリのアドレスを比較してるんだよ。 Set objA = Range("A1") Set objB = Range("A1") Debug.Print objA Is objB って Set objA = Range("A1") Set objB = Range("A1") Debug.Print ObjPtr(objA) = ObjPtr(objB) と同じ。
351 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 16:15:11.69 ] どういう時にインスタンスが複製されるのかよくわからんちん
352 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 20:07:31.39 ] >>351 の言う複製の意味がよくわからんちん
353 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:12:18.80 ] public変数使わない方が良い理由が分からん
354 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:20:55.81 ] >>339-340 >シートオフジェクトは最初からあるからだったりするのか? 多分そう。 Cell オブジェクトなんてものがあれば、Cells("A1") Is Cells("A1") が True になるかもしれないけど、VBA には、Cell オブジェクトはなくて、 (*仮に単一のセルだとしても) 常にRange オブジェクトになってしまう。 Range オブジェクトは、当然範囲の情報を持つ必要があるので、 Obj = ActiveCell とやる度に、各々別の Range オブジェクトが「生成」される。 と言うのが、>>329 の答えだと思う。
355 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:21:41.47 ] >>353 >public変数使わない方が良い理由が分からん 必要ない奴に見せたがることはないだろ。
356 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:23:37.89 ] ユーザーフォーム間で変数やり取りとかするときにどうしてもpublic使いたくなる それでもやっぱりpublicには抵抗がある
357 名前:デフォルトの名無しさん mailto:sage [2011/12/19(月) 23:32:17.87 ] パブリックプロパティならいいんじゃない
358 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 01:07:18.25 ] >>353 プログラムの規模が大きくなった時にバグの元になりやすいっていう経験則だよ 今はまだピンと来なくても、先人の言うことは聞いておいた方がいい
359 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:37:37.21 ] 逆にPublic変数を使った方がいいっていうシチュエーションはあるのかな
360 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 07:50:40.39 ] Public変数 メリット:小規模プログラムで受け渡しI/Fを考えなくて良い デメリット:クラス間の結合度が問題になる(再利用しにくくなる) 位? ところでVBAって ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? もちろんPublicで型宣言しておいて。 なんだか言語仕様上ダメだった記憶がある。 変数クラスを定義してそのクラスのインスタンスをローカルで定義して 参照渡ししないとダメだった記憶もある。 なので、ユーザーフォームクラスとの受け渡しはPublic使った様な記憶 がある。
361 名前:デフォルトの名無しさん [2011/12/20(火) 11:09:24.62 ] >>360 矢切りの渡しでなら渡せる
362 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 13:33:28.48 ] 矢切の渡しってたまに聞くけどどういう意味なの? 調べてもそれっぽいのでてこないけど
363 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 15:58:55.11 ] ListViewのSortOrderって昇順と降順しかない? 1,5,10,50,100 とあるとしても 1 10 100 5 50 となってしまいます これを 1 5 10 50 100 のようにできないですか?
364 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:23:33.25 ] >>362 だよな。それが心のこりだわ。
365 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 19:43:09.87 ] Functionプロシージャ内でSubプロシージャって呼び出せますか? 自分でやったらダメでしたが、何か方法があれば教えてください。
366 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 20:27:23.48 ] 普通に呼べるが
367 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:16:35.69 ] >>366 具体的には、シートで「=Function名(引数値)」って書いたんですが Function中のSubが実行されないのが疑問になっています。普通に呼べますか?
368 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:36:46.56 ] 呼べる。MsgBox入れてみればわかる。
369 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:45:52.54 ] あ、MsgBoxは動きました。有難う御座います。 自分がしたいのは、ワークシートのA1をクリアする様なSubを Function中から呼び出す様にして、そのワークシートで =Function名(引数) とA1以外のセルで書いて、シートのA1をクリアすることです。
370 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:51:56.35 ] 求むESPer
371 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 21:58:53.06 ] >>369 support.microsoft.com/kb/170787/ja
372 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 22:19:19.93 ] >>371 おお、有難う御座います!そうか、できないのかぁ。セルの総和とかで クリアするかどうかをFunctionで判定して消去、ってやりたかったなぁ。
373 名前:デフォルトの名無しさん mailto:sage [2011/12/20(火) 23:17:07.48 ] 関数でシート操作をしたいんだろうけど 更新処理をフックにするくらいだろうなあ
374 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 03:41:16.16 ] >>360 >ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? Public Type hogeType a As Integer b As Integer End Type があるとして Sub test() Dim hoge As hogeType hoge.a = 1 hoge.b = 2 MsgBox hogesum(hoge) MsgBox hoge.a End Sub Function hogesum(ByRef hage As hogeType) As Integer hogesum = hage.a + hage.b hage.a = 0 hage.b = 0 End Function でtestを走らせると、3と0と表示される 問題なく渡せるようだ ちなみに引数をByValにすると ユーザー定義型をByValで渡すことはできません ってコンパイルエラーになった できないのは値渡しと矢切りの渡しだな
375 名前:360 mailto:sage [2011/12/21(水) 07:31:46.89 ] >>374 申し訳ないですが、言葉がごっそり抜けてました。 ----------------------------------------------------- (誤) ところでVBAって ユーザー定義型変数の参照渡しをプロシジャ引数で渡せたっけ? (正) ところでVBAって 標準モジュールでGlobal定義されたユーザー定義型変数の参照渡しを 標準モジュールからクラスモジュールのプロシジャに プロシジャ引数で渡せたっけ? ----------------------------------------------------- 同一クラス内や標準モジュール内で渡せるのは知ってます(実際にできているので)。 標準モジュールからクラスモジュールのプロシジャに渡そうかなと思って書いたら、 VBAから怒られた。 解決方法は、 クラスモジュールにユーザー定義型変数だけPublic定義したクラスを定義して そのクラスのインスタンスを標準モジュールに定義してからそのObjectを参照渡しする。 だけど、面倒なので、サクッと渡せないかなぁ、とおもっだだけです。
376 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 07:33:57.50 ] >>375 Friendでいけたような記憶が
377 名前:360 mailto:sage [2011/12/21(水) 07:34:45.04 ] あと、 矢切りの渡しって 「global宣言されたユーザー定義型変数を標準モジュールからクラスモジュールのプロシジャに参照渡しする」 の意味でしょうか? 隠語を良くしらないので(不勉強済みませんが)。
378 名前:360 mailto:sage [2011/12/21(水) 07:37:20.28 ] >>376 Friendも試したけどダメだった様な記憶があります。 VBだと可能らしい(VBは使ったことないですが)。 というので混乱した覚えがあります。
379 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 08:19:02.97 ] >>377 昔、矢切の渡しってヒット曲があっただけのおっさんジョークだからあまり真面目に受け取るなよ… w
380 名前:360 mailto:sage [2011/12/21(水) 08:23:29.73 ] りょうかい。 まぁ、ワシも40過ぎのおっさんですけどねw
381 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 16:50:38.27 ] Windows97 Excel2003で、アドインについて。 下記のコードを一度実行後にxlaファイルの配置場所が変わった場合、そのまま再度下記を実行すると、変更後のパスでAddしても、実際には変更前のパスのアドインが追加されます。(ファイルがないため関数実行部分でエラー) Set myAddIn = AddIns.Add(パス.あどいん.xla) myAddIn.Installed = true アドイン関数実行 myAddIn.Installed = false どうもエクセル→ツール→アドイン から、該当するアドインを手動で削除しないとパスの変更に対応できないのですが、どうにか自動で対応できないでしょうか。 AddしたxlaファイルをKillしてもダメでした。 ケータイからなので見にくければすみません。よろしくお願いします。
382 名前:デフォルトの名無しさん [2011/12/21(水) 18:47:10.91 ] 質問あげ
383 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 20:42:08.31 ] そのOSパチモンだよ
384 名前:381 [2011/12/21(水) 21:14:08.81 ] うわどういう間違いしてんだorz OSはXPです……
385 名前:381 mailto:sage [2011/12/21(水) 21:15:50.46 ] 自ら晒しageしてしまった…
386 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:05:49.76 ] アドンズからリムーブしてみては?
387 名前:デフォルトの名無しさん mailto:sage [2011/12/21(水) 22:17:31.77 ] >>375 クラスモジュール(Class1) Function hogesum(ByRef hage As hogeType) As Integer hogesum = hage.a + hage.b hage.a = 0 hage.b = 0 End Function 標準モジュール Public Type hogeType a As Integer b As Integer End Type Sub test() Dim hoge As hogeType Dim c As New Class1 hoge.a = 1 hoge.b = 2 MsgBox c.hogesum(hoge) MsgBox hoge.a End Sub 同じように3と0の表示 ためしたのは2007だから、それ以前のバージョンではどうかしらんが、問題なさそうだ 具体的にどういうエラーが出てたのか気になる
388 名前:360 mailto:sage [2011/12/21(水) 23:13:55.10 ] どうもです。 私は2003で駄目だったんですが、 VBA6.Xという意味では同じですかね? ただ、やったのが2年位前だったんで?です。 ユーザー定義型のサイズが数10KBクラスなので その辺が怪しいのかも? ありがとうございました。
389 名前:360 mailto:sage [2011/12/21(水) 23:21:38.00 ] あ・・・思い出した String型がメンバに含まれてました。 サイズを指定してないので動的変数ということになるので その辺も影響しているかもです。 それと、ユーザー定義型のメンバに他のユーザー定義型を含んでます。 エラーメッセージは・・・・忘れてしまいましたが、 何となく理由が分かった様な気がします。 ありがとうございました。
390 名前:381 mailto:sage [2011/12/22(木) 09:50:46.01 ] >>386 いろいろやってみましたが、リムーブの仕方がわかりません… 諦めて手動でやってもらう手順にするしかないかな…
391 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:38:16.17 ] VBAと相性の良い言語って何がある?
392 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 12:53:13.38 ] 相性ってどういうこと? どの言語でも組み合わせて使うという発想はあんまりないと思う 目的で使い分けるのが普通じゃないのかな
393 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 13:26:58.68 ] Excelとって意味なら.NETかな
394 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:16:46.86 ] VBSとか
395 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:24:48.00 ] ActivePerl+WIN32::OLE
396 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 14:55:45.37 ] webとデータのやり取りをするって意味です
397 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 15:14:31.06 ] もしかして探してるのはアドインとかライブラリ?
398 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:49:09.81 ] VBAが言語である事を知らないのでは
399 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 20:54:01.96 ] 入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか
400 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 21:39:15.79 ] >>399 > 演算処理は高速なCでやりたいとか そんなこと思いつく奴の質問とは思えないが…
401 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:02:43.63 ] 3ステップで学ぶExcelVBA入門終わったんだが、次にオススメの課題有りの参考書オススメ無いですか?
402 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:05:35.35 ] 横から失礼します。 >>399 >入出力にExcelのワークシートを使って、演算処理は高速なCでやりたいとか ちなみにこれの実現方法としては、例えばどんなのがあるんですか?
403 名前:デフォルトの名無しさん mailto:sage [2011/12/22(木) 23:37:59.06 ] >>402 Excel VBAからDLL呼び出し www.ne.jp/asahi/hishidama/home/tech/excel/dll.html
404 名前:デフォルトの名無しさん [2011/12/23(金) 10:03:27.62 ] FromにTimerを貼り付けるには?
405 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 10:42:30.15 ] >>404 >Fromに それは難しそうだ、その From とやらを作っている会社に問い合わせるべき。
406 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:20:34.71 ] [タイマーコントロール] クラスモジュール Tips15: VBAでも出来る [ タイマーコントロール ] クラスモジュール (Ver 3.0) www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm Fromってなんやねん w Formだろ
407 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 11:28:49.53 ] Excel.Application.Visible = False ブック作成 ★ループ★ シート追加 ペースト ★ループ★ マクロ動作中に他の作業(ブラウザ使う)とかができない・・・(正確には画面がチカチカする) 完全にバックグラウンドで動作させるのは無理なのかな?
408 名前:404 [2011/12/23(金) 13:36:54.66 ] >>405 アホ >>406 ありがとうございます! やっぱり標準機能ではないのですね でも工夫すればできるということなんですね
409 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 15:58:49.73 ] タイマーコントロールってVBAで出来たんだっけ .netは標準装備だったけど
410 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 19:21:34.60 ] APIのSetTimerとか使った自前実装っぽい。
411 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 21:16:35.17 ] なんでググらないんだろうな タイマーの実現方法調べるのに3時間か…
412 名前:デフォルトの名無しさん [2011/12/23(金) 21:54:29.88 ] Formについてです。 はじめのときの Load、Initialize、Activateの使いわけを教えてくださいませ。 あと、おわるときの Unload、Terminateの使い分けを教えてくださいませ。 ちなみにLoad←→Unload、Initialize←→Terminateと対応ペアがあるようだけど、Activateに対するペアもう一方はなぜないのですか?
413 名前:デフォルトの名無しさん [2011/12/23(金) 22:23:42.54 ] >>412 home.att.ne.jp/zeta/gen/excel/c04p28.htm ↑を読めば分かると思うけど、Activateの反対はDeactivate そして、Load、Unload、Show、Hideはメソッドで Activate、Deactivate、Initialize、Terminateはイベント
414 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:35:00.40 ] >>387 こういう似非オブジェクト指向が面倒だからVBAではPublicばっか使ってるわ vba程度で大規模なもんつくらねーし
415 名前:413 [2011/12/23(金) 22:35:43.53 ] >>413 はちょっと書き方に配慮が足りなかった。 (メソッドとイベントの対応が分かりにくい書き方になってた) LoadするとInitializeイベントが発生して、 Showでイベントが発生する。 HideするとDeactivateイベントが発生して、 UnloadでTerminateイベントが発生する。 LoadしないでShowすると自動的にLoadされてShowするし、 HideしないでUnloadしても自動的にHideされてUnloadする。
416 名前:413 [2011/12/23(金) 22:37:50.21 ] 度々スマン なぜか抜けてた 誤:Showでイベントが発生する。 正:ShowでActivateイベントが発生する。
417 名前:デフォルトの名無しさん mailto:sage [2011/12/23(金) 22:40:19.38 ] >>407 できるっしょ
418 名前:デフォルトの名無しさん [2011/12/24(土) 04:42:11.86 ] 特定のセルにコントロールを移したときに そのセルに文字を入力したいのですがどうすればいいですか?
419 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 04:58:05.63 ] >>418 SelectionChangeイベント
420 名前:418 [2011/12/24(土) 05:01:13.86 ] >>419 ありがとうございます
421 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 05:56:28.60 ] >>412 Loadは命令。Initialize、Activateはその結果実行されるプロシージャ(イベント) Initializeはそのフォーム(のインスタンス)で1回しか起きないが、Activateは何回でも起きる(可能性がある) Unloadも命令。Terminateはその結果起きるイベント >>415 どうせならもうちょっと正確に書け LoadとUnloadはメソッドじゃない。ステートメントだ オブジェクト(フォーム)に定義されている命令ではなく、VBA言語に定義されている命令 LoadでInitializeイベントが起きるのも、ShowでActivateイベントが起きるのも結果に過ぎないぞ ShowしなくてもActivateイベントは(そういう状況になれば)起こるし、HideしなくてもDeactivateイベントも起こる こっから先は気にしなくてもいいかもしれんが、実験すると Loadする前にインスタンス生成した段階でInitializeイベントは起こる まあこれは解る Unloadするとその時点でTerminateイベントが起こる どうもインスタンスへの参照が無効になるっぽい。これはちょっと嫌な仕様だ Unloadしないでインスタンスへの参照を削除した場合、Terminateイベントが起こってないかもしれん デストラクタはあてにするなって事か とりあえずLoadとUnloadメソッドは忘れて、Terminateイベントは無いものとして扱うのがいいんじゃないかな ついでに実験中に気付いたこと UserForm1.Show vbModeless MsgBox "表示しました" このコード走らすと初回表示のActivateイベントが発生しなくなる これってバグじゃねえかと