トップページ > プログラム > 2014年05月05日 > uFaF33P2

書き込み順位&時間帯一覧

3 位/206 ID中時間01234567891011121314151617181920212223Total
書き込み数0101000010000000000121007



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Excel VBA 質問スレ Part33
Excel VBA 質問スレ Part32

書き込みレス一覧

Excel VBA 質問スレ Part33
476 :デフォルトの名無しさん[sage]:2014/05/05(月) 01:55:30.65 ID:uFaF33P2
>>475
SelectionChangeイベントで、カーソルが動くたびにセルの座標をいちいち独自の履歴に溜めていく

だけど普通は商品NOが確定すると同時にChangeイベントで商品名をセットするもんだよ
ワンテンポ遅らせる理由がわからない
初心者ならなおさらセオリー通りにやった方がいい
さらに言えば、商品名をセットする程度の処理ならVBAを使うまでもなくVLOOKUPとかで可能だし
Excel VBA 質問スレ Part32
860 :デフォルトの名無しさん[sage]:2014/05/05(月) 03:33:06.97 ID:uFaF33P2
>>859
任意の型の配列をVariantに代入した時、代入されるのはポインタ(番地)じゃなくて内容、配列全体が丸ごとコピーされる
だから配列のサイズに応じて処理時間も変わる

Dim A(100) As Integer
Dim B As Variant
B = A
MsgBox TypeName(B)

このサンプルの場合、代入後にBの型を見るとInteger(配列)に変わっている
Excel VBA 質問スレ Part32
862 :デフォルトの名無しさん[sage]:2014/05/05(月) 08:56:42.69 ID:uFaF33P2
証拠にはならんね
ちょっと調べてみたけど、簡単には証拠は示せなさそう

もっと厳密に言うと、Variantに配列を代入すると、もともとVariantには数値が1つしか格納できないので、
配列のコピーが作られた上で、その配列へのポインタがVariantに格納される
だからVariantの中身はポインタ、という理解は間違ってはないけど、そのポインタの先にあるのは
代入元の配列ではなく、新しく作られた配列になっている
配列を丸ごと新しく作るため、処理はそれなりに重くなるしメモリも消費する
証拠はないけど、そういう仕様

どうして配列がbyValで直接渡せないのか、理由はよくわからないが、たぶんスタックオーバーフローを防ぐためのMSのおせっかいだと思う
Variantに配列を入れた時は、配列の本体は別の所に作られてスタックはVariant本体の分しか消費しない
だから許容する仕様にしたんじゃないのかな
Excel VBA 質問スレ Part32
869 :デフォルトの名無しさん[sage]:2014/05/05(月) 19:37:01.29 ID:uFaF33P2
>>867
>>303
Excel VBA 質問スレ Part32
872 :デフォルトの名無しさん[sage]:2014/05/05(月) 20:05:33.73 ID:uFaF33P2
Sleepはプログラムの実行を一時的に止める
DoEventsはメッセージループを処理する
Excel VBA 質問スレ Part32
873 :デフォルトの名無しさん[sage]:2014/05/05(月) 20:06:58.64 ID:uFaF33P2
>>839あたりからも同じ匂いがする
Excel VBA 質問スレ Part32
878 :デフォルトの名無しさん[sage]:2014/05/05(月) 21:31:26.89 ID:uFaF33P2
ウィンドウハンドルを取得した上でキーボードやマウス、その他のイベントを直接送ってやればほとんどなんでもできるけど、
さすがにVBAの比率が低くなりすぎてスレチ
API関係のスレにでも行け


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。