[過去ログ]
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1432173164/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
302: デフォルトの名無しさん [sage] 2017/04/21(金) 22:18:30.36 ID:TpPjDerb >>300 Dictionaryのkeyにすれば良いんじゃね http://mevius.5ch.net/test/read.cgi/tech/1432173164/302
303: デフォルトの名無しさん [sage] 2017/04/21(金) 22:25:23.50 ID:9tskJEPF CollectionよりDictionaryだな、確かに http://mevius.5ch.net/test/read.cgi/tech/1432173164/303
304: デフォルトの名無しさん [sage] 2017/04/21(金) 23:24:44.93 ID:3F+Ljh12 そういう質問、初心者によく聞かれるわ 普通は配列を使えと教えるもんだが http://mevius.5ch.net/test/read.cgi/tech/1432173164/304
305: デフォルトの名無しさん [sage] 2017/04/22(土) 06:16:50.97 ID:zUhE/Mll >>302 >>301 ありがとうございます。Collection Dictionary 調べてみましたが どちらも説明をざっと読んでも使い方が理解できませんでしたが挑戦してみます。 phpのように (aaa & no) = と変数名自体を複数の変数で合成する事は出来ないのですね。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/305
306: 299 [sage] 2017/04/22(土) 08:27:20.54 ID:zUhE/Mll >>300 >>301 >>302 >>304 aaa1=「状況に応じて変化する数値1」 aaa2=「状況に応じて変化する数値2」 aaa3=「状況に応じて変化する数値3」 ・ ・ すみません説明を単純にするために「例文1」としてましたが 変数に格納されるのは状況に応じて変化する数値(他の集計の計算結果)でした。 固定された文言であればDictionary keyで処理できるというのはわかりましたが 格納されている物が変化する数値の場合かつ 変数名を数字で管理(他の集計から3という結果が
出たら→aaa3が適応されるみたいな) したい場合こういうことを実現する方法はありますでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1432173164/306
307: デフォルトの名無しさん [sage] 2017/04/22(土) 08:53:12.92 ID:MM2jcjjz >>306 変数名を数字だけで管理する方法はない。 VBAの仕様上、できない。 というか、その集計結果なるものがプログラム実行時に決定するのだとしたら、集計結果を格納する変数の名前に集計結果の数値をはじめから盛り込もうとするのは無理があるし、そもそも理由が分からない。 やりたいことを実現するにはもっと適切な他の方法があるんじゃないかな。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/307
308: デフォルトの名無しさん [sage] 2017/04/22(土) 11:27:30.44 ID:6RXuRSFv >>306 Dictionaryのvalueは変更可能 http://mevius.5ch.net/test/read.cgi/tech/1432173164/308
309: 299 [sage] 2017/04/22(土) 15:29:06.19 ID:zUhE/Mll >>308 >>307 理解するのにかなり時間がかかりましたがDictionaryなんとなくわかりました。 これって Dim とかPublicとかの変数とは別に存在できるんですね。 全く未知の分野ですが使ってみます。ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/309
310: デフォルトの名無しさん [sage] 2017/04/22(土) 20:43:48.30 ID:zUhE/Mll Dim dic As New Dictionary Dim i As Integer dic.Add "キー1", "アイテム1" dic.Add "キー2", "アイテム2" dic.Add "キー3", "アイテム3" Dictionaryで指定した"キー"と "アイテム"は処理が終了するとリセットされるようですが、 グローバル変数のように処理が終了しても次実行されるまで記憶させておくようにする事は出来ないのでしょうか? http://mevius.5ch.net/test/read.cgi
/tech/1432173164/310
311: デフォルトの名無しさん [sage] 2017/04/22(土) 22:48:51.75 ID:AOzJBbd9 >>310 プロシージャを跨いで値を保持させるなら、グローバルな配列変数、(アプリケーションがExcelならば)セル、シェイプ、カスタムドキュメントプロパティ、グローバルコレクション、自作のグローバルクラスのインスタンスなどに値を記憶させるしかない でもそれならわざわざプロシージャ内でDictionaryを使って連想配列を操作するより、ExcelのセルにKeyと値を書き込んで配列アクセスして読み書きする処理の方が遥かに楽だと思う http://mevius.5ch.net/test
/read.cgi/tech/1432173164/311
312: デフォルトの名無しさん [sage] 2017/04/22(土) 23:30:15.48 ID:zUhE/Mll >>311 ありがとうございます。 今作っているコードでセルへのアクセスが膨大になってきて処理時間がどんどん長くなる傾向がみられまして 全操作をセルにアクセスせずに完結させようと色々考えていましたがなかなかそうはいかないようですね。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/312
313: デフォルトの名無しさん [sage] 2017/04/23(日) 05:30:19.61 ID:t5ve42Di >>312 Dim dic As New Dictionary の宣言を何処でしているかによるんじゃね? http://mevius.5ch.net/test/read.cgi/tech/1432173164/313
314: デフォルトの名無しさん [sage] 2017/04/23(日) 10:16:09.39 ID:wfwXXeKO >>312 標準モジュールとかでDictionary型のオブジェクト変数をグローバルスコープ(Public)でNew宣言すれば、処理を抜けてもDictionaryのItemは初期化されないんじゃないのかな ただ単なる配列の処理でデータが数千件程度なら、描画止めた状態でワークシート使った方が遥かに楽だと思うが。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/314
315: デフォルトの名無しさん [sage] 2017/04/23(日) 16:51:51.75 ID:fs201BJ1 >>311 引数に渡すってのを忘れてるぞ。 一番使われてるんじゃないか? http://mevius.5ch.net/test/read.cgi/tech/1432173164/315
316: デフォルトの名無しさん [sage] 2017/04/23(日) 17:11:32.92 ID:yvJyPXpi >>315 何の引数に渡すことを指してるのかな? http://mevius.5ch.net/test/read.cgi/tech/1432173164/316
317: デフォルトの名無しさん [sage] 2017/04/23(日) 18:02:04.26 ID:fs201BJ1 >>316 プロシージャを跨ぐって話だろ。 別のプロシ−ジャに引数として渡せば形の上ではそれぞれのローカル変数でも値は保持されるだろ。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/317
318: デフォルトの名無しさん [sage] 2017/04/23(日) 18:27:09.16 ID:yvJyPXpi >>317 >>310を読んでなんとなく、一個のルーチンのプロシージャ間の値の受け渡しの話ではなく、ルーチン内で一度AddしたDictionaryのKeyとItemを何らかの形で保存して、同じルーチンを再実行したときにKeyとItemを再利用することが出来るかどうかという話だと思ったんだが まぁ、オブジェクトプロパティへの値の保存も実際はそのオブジェクトを定義してるクラスのメソッドに引数を渡してるのと同じだから、変わらないといえば変わらないけど http://mevius
.5ch.net/test/read.cgi/tech/1432173164/318
319: デフォルトの名無しさん [sage] 2017/04/28(金) 17:33:41.10 ID:krqKI6DB 超既出FAQですな。 『Public 宣言された変数の有効期間』 https://support.microsoft.com/ja-jp/help/408871 簡単に言うと、メソッド実行中以外はいつでもpublic変数はクリアされうるから、値が残っていることを期待したマクロを書くなってこと。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/319
320: デフォルトの名無しさん [sage] 2017/04/28(金) 19:14:11.69 ID:AZuqyiJa >>319 俺は使う時にクリアされてるかチェックしてクリアされてたら再設定するようにしてるな。 値が0だったら値を取得するFunctionを呼び出すって感じ。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/320
321: デフォルトの名無しさん [sage] 2017/04/28(金) 22:13:43.74 ID:A3VkBONm Publicな静的変数は使わない。 エクセルのセルとかワードの文書変数とかの規定オブジェクトにデータを書き込んだ方が便利 http://mevius.5ch.net/test/read.cgi/tech/1432173164/321
322: デフォルトの名無しさん [sage] 2017/04/29(土) 02:16:02.91 ID:2iGvQ1xG >>321 いや、それは格好悪いんじゃね? セルを使ったりCustomDocumentPropertiesも使うけど、それに合ったものだから使うわけでPublic変数に合ったものもある。 適材適所だろ。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/322
323: デフォルトの名無しさん [sage] 2017/05/25(木) 20:51:55.45 ID:yS9f0RVc ontime で実行するプロシージャって標準モジュールに書かないとあかんのか。 このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。って出た。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/323
324: デフォルトの名無しさん [sage] 2017/05/25(木) 21:07:30.77 ID:JTnnq+Q0 >>323 スコープ 普通にCallで呼び出せる場所にないと実行できないのは、どの方法でも同じ http://mevius.5ch.net/test/read.cgi/tech/1432173164/324
325: デフォルトの名無しさん [sage] 2017/05/26(金) 00:03:34.69 ID:Fw61rXsb >>324 ThisWorkBookのモジュールからOnTimeでThisWorkBookのモジュール内のPrivate Sub を予約したんですが・・・これじゃ駄目なんですかね? http://mevius.5ch.net/test/read.cgi/tech/1432173164/325
326: デフォルトの名無しさん [sage] 2017/05/26(金) 23:19:52.51 ID:Fw61rXsb >>325です OnTimeで実行予約するプロシージャを標準モジュールに移動したら動くようになりました〜 http://mevius.5ch.net/test/read.cgi/tech/1432173164/326
327: デフォルトの名無しさん [] 2017/06/05(月) 21:02:56.92 ID:bd1ggU41 特定の文字が含まれているセル(複数ある)を検索し、 検索されたセルを含む行全体(Entirerow)を同時選択する方法 以上お願いします。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/327
328: デフォルトの名無しさん [] 2017/06/05(月) 21:06:49.56 ID:bd1ggU41 その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/328
329: デフォルトの名無しさん [sage] 2017/06/05(月) 21:25:48.60 ID:nSGQpg3a 鮮やかな丸投げっぷりにワラタ 作成依頼OKな Excel VBAスレと間違えてない? http://mevius.5ch.net/test/read.cgi/tech/1432173164/329
330: デフォルトの名無しさん [sage] 2017/06/05(月) 21:31:47.51 ID:tRFV5HQ5 >>328 とりあえず、複数行を選択するところをマクロの記録で見てみたら? ctrlキー押しながら選択するのとshiftキーを押しながらのとで。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/330
331: デフォルトの名無しさん [sage] 2017/06/05(月) 21:41:12.12 ID:jKyX/qwq 検索対象のセル範囲でForループを回す セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく ループ終了後にSelectする 以上 http://mevius.5ch.net/test/read.cgi/tech/1432173164/331
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 671 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s