[過去ログ] VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
308(1): 2017/04/22(土)11:27 ID:6RXuRSFv(1) AAS
>>306
Dictionaryのvalueは変更可能
309: 299 2017/04/22(土)15:29 ID:zUhE/Mll(3/5) AAS
>>308
>>307
理解するのにかなり時間がかかりましたがDictionaryなんとなくわかりました。
これって Dim とかPublicとかの変数とは別に存在できるんですね。
全く未知の分野ですが使ってみます。ありがとうございました。
310(2): 2017/04/22(土)20:43 ID:zUhE/Mll(4/5) AAS
Dim dic As New Dictionary
Dim i As Integer
dic.Add "キー1", "アイテム1"
dic.Add "キー2", "アイテム2"
dic.Add "キー3", "アイテム3"
Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、
グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか?
311(2): 2017/04/22(土)22:48 ID:AOzJBbd9(1) AAS
>>310
プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない
でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う
312(2): 2017/04/22(土)23:30 ID:zUhE/Mll(5/5) AAS
>>311
ありがとうございます。
今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして
全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。
313: 2017/04/23(日)05:30 ID:t5ve42Di(1) AAS
>>312
Dim dic As New Dictionary
の宣言を何処でしているかによるんじゃね?
314: 2017/04/23(日)10:16 ID:wfwXXeKO(1) AAS
>>312
標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな
ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。
315(1): 2017/04/23(日)16:51 ID:fs201BJ1(1/2) AAS
>>311
引数に渡すってのを忘れてるぞ。
一番使われてるんじゃないか?
316(1): 2017/04/23(日)17:11 ID:yvJyPXpi(1/2) AAS
>>315
何の引数に渡すことを指してるのかな?
317(1): 2017/04/23(日)18:02 ID:fs201BJ1(2/2) AAS
>>316
プロシージャを跨ぐって話だろ。
別のプロシ−ジャに引数として渡せば形の上ではそれぞれのローカル変数でも値は保持されるだろ。
318: 2017/04/23(日)18:27 ID:yvJyPXpi(2/2) AAS
>>317
>>310を読んでなんとなく、一個のルーチンのプロシージャ間の値の受け渡しの話ではなく、ルーチン内で一度AddしたDictionaryのKeyとItemを何らかの形で保存して、同じルーチンを再実行したときにKeyとItemを再利用することが出来るかどうかという話だと思ったんだが
まぁ、オブジェクトプロパティへの値の保存も実際はそのオブジェクトを定義してるクラスのメソッドに引数を渡してるのと同じだから、変わらないといえば変わらないけど
319(1): 2017/04/28(金)17:33 ID:krqKI6DB(1) AAS
超既出FAQですな。
『Public 宣言された変数の有効期間』
外部リンク:support.microsoft.com
簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。
320: 2017/04/28(金)19:14 ID:AZuqyiJa(1) AAS
>>319
俺は使う時にクリアされてるかチェックしてクリアされてたら再設定するようにしてるな。
値が0だったら値を取得するFunctionを呼び出すって感じ。
321(1): 2017/04/28(金)22:13 ID:A3VkBONm(1) AAS
Publicな静的変数は使わない。
エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利
322: 2017/04/29(土)02:16 ID:2iGvQ1xG(1) AAS
>>321
いや、それは格好悪いんじゃね?
セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。
適材適所だろ。
323(1): 2017/05/25(木)20:51 ID:yS9f0RVc(1) AAS
ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。
このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。
324(1): 2017/05/25(木)21:07 ID:JTnnq+Q0(1) AAS
>>323
スコープ
普通にCallで呼び出せる場所にないと実行できないのは、どの方法でも同じ
325(1): 2017/05/26(金)00:03 ID:Fw61rXsb(1/2) AAS
>>324
ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね?
326: 2017/05/26(金)23:19 ID:Fw61rXsb(2/2) AAS
>>325です
OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜
327(1): 2017/06/05(月)21:02 ID:bd1ggU41(1/3) AAS
特定の文字が含まれているセル(複数ある)を検索し、
検索されたセルを含む行全体(Entirerow)を同時選択する方法
以上お願いします。
328(1): 2017/06/05(月)21:06 ID:bd1ggU41(2/3) AAS
その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
329: 2017/06/05(月)21:25 ID:nSGQpg3a(1) AAS
鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
330: 2017/06/05(月)21:31 ID:tRFV5HQ5(1) AAS
>>328
とりあえず、複数行を選択するところをマクロの記録で見てみたら?
ctrlキー押しながら選択するのとshiftキーを押しながらのとで。
331: 2017/06/05(月)21:41 ID:jKyX/qwq(1) AAS
検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332: 2017/06/05(月)21:45 ID:epzJZZwH(1) AAS
>>327
Ctrl+Fで検索しろやボケナス
ちゃんと行選択までしてくれるぜ
333: 2017/06/05(月)22:37 ID:bd1ggU41(3/3) AAS
ごめんなさい、質問者です。
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
334: 2017/06/06(火)05:49 ID:tznXutzN(1) AAS
色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。
例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
335: 2017/06/06(火)09:11 ID:YhE+Nuz8(1) AAS
331だが、同じ行に該当セルが複数ある場合は無駄が生じるな
実現したい機能次第だが、工夫が必要かもな
336(3): 2017/06/07(水)19:31 ID:e13xfCG0(1) AAS
はじめまして。以下2点、教えていただけると幸いです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。
1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。
2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
337: 2017/06/07(水)21:49 ID:nqbSOdK9(1) AAS
>>336
コマンドはありません
上下前次1-新書関写板覧索設栞歴
あと 665 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.011s