[過去ログ]
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net (1002レス)
VBAなんでも質問スレ Part2 [転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1432173164/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
291: デフォルトの名無しさん [sage] 2017/04/10(月) 04:05:13.85 ID:sRLMXvmn >>287 しかもEndやErrorで抜けたら破棄されるという罠 http://mevius.5ch.net/test/read.cgi/tech/1432173164/291
292: デフォルトの名無しさん [sage] 2017/04/11(火) 00:40:18.97 ID:egN7ZnVO 素数や組み合わせ爆発のような数学の迷宮的な問題に陥って 一生かかってもコードを完成させるのは無理ですよみたいな場合もあるのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1432173164/292
293: デフォルトの名無しさん [sage] 2017/04/11(火) 10:41:22.79 ID:Ei1BFwyD >>292 数学的バックグラウンドがなければコードが書けないという類いの問題はあるね。 たとえばNP困難なやつ。 巡回セールスマンとかナップサック問題とか、ナーススケジューリング問題とか。 自力でなければ、それなりの回答が得られる解法(コード)が既に存在してるものもある。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/293
294: デフォルトの名無しさん [sage] 2017/04/11(火) 11:01:45.96 ID:o/k96Ri6 問題を解く方法を考案するのと、その方法をコンピューター言語に翻訳する作業は別ですわ それぞれに異なった知識と才能が必要となりますので http://mevius.5ch.net/test/read.cgi/tech/1432173164/294
295: デフォルトの名無しさん [sage] 2017/04/11(火) 11:03:15.94 ID:6dnWkPrh >>291 End Subの行にブレークポイント、これ http://mevius.5ch.net/test/read.cgi/tech/1432173164/295
296: デフォルトの名無しさん [sage] 2017/04/12(水) 22:41:46.94 ID:iuenojzm パブリック変数で 1000個 10000個でも平気だっり? とかどんな拷問なんだよw http://mevius.5ch.net/test/read.cgi/tech/1432173164/296
297: デフォルトの名無しさん [sage] 2017/04/20(木) 23:26:11.80 ID:92wBssf5 テストしてみたがパブリック変数500個は問題なく動いた。 もっと使ってる人いる? http://mevius.5ch.net/test/read.cgi/tech/1432173164/297
298: デフォルトの名無しさん [sage] 2017/04/21(金) 19:40:41.67 ID:TpPjDerb いらない http://mevius.5ch.net/test/read.cgi/tech/1432173164/298
299: デフォルトの名無しさん [sage] 2017/04/21(金) 21:22:06.10 ID:BWuBR5xw 変数の一部を変数にする事は出来ないのでしょうか?(代入 とかではなく) たとえば↓はイメージですが変数名の箇所を文字列をつなぎ合わせる時と 同じように変数をわりあてられないのでしょうか?(以下は動きませんがphpではこれができます。) dim aaa1 dim aaa dim no dim bbb aaa1=例文1 aaa=aaa no=1 aaa & no = bbb msgbox bbb ↓ 結果は「例文1」 と表示されますみたな、、 http://mevius.5ch.net/test/read.cgi/tech/1432173164/299
300: デフォルトの名無しさん [sage] 2017/04/21(金) 21:28:31.62 ID:BWuBR5xw >>299 最終的には aaa1=「例文1」 aaa2=「例文2」 aaa3=「例文3」 ・ ・ とし aaa & no のno番号だけ差し替えて制御するみないな感じで使います。 ただしnoの番号は連続した数字ではなく他の集計結果からランダムに発生するため ループ処理等では成り立たず変数のように扱う必要があります。 http://mevius.5ch.net/test/read.cgi/tech/1432173164/300
301: デフォルトの名無しさん [sage] 2017/04/21(金) 22:10:11.53 ID:9tskJEPF >>300 aaa1とかaaa2を変数として捉えず、文字列と数値を要素に持つ2次元配列と見れば良い で、データ全体を制御するときは、aaa1,aaa2...の2次元配列全てを要素として持つコレクションオブジェクトを生成して操作する http://mevius.5ch.net/test/read.cgi/tech/1432173164/301
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 682 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s