- 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関係のスレにでも行け
|