1 名前:デフォルトの名無しさん mailto:sage [2023/05/31(水) 08:23:38.97 ID:4RV1IxmB.net] ExcelのVBAに関する質問スレ コード書き込みや作成依頼もOK 次スレは>>980 が立てること 無理なら細かく安価指定 関連スレ Excel VBA 質問スレ Part79(ワッチョイあり) https://mevius.5ch.net/test/read.cgi/tech/1674875532/ ※前スレ Excel VBA 質問スレ Part79 https://mevius.5ch.net/test/read.cgi/tech/1674874007/
193 名前:デフォルトの名無しさん mailto:sage [2023/11/08(水) 19:53:31.21 ID:7oppFyNo.net] >>190 どうやったの?
194 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 00:50:32.41 ID:VwCFMbHh.net] 俺も気になる。 NumberFormatLocalじゃない奇想天外な解決策だったらウケる。
195 名前:デフォルトの名無しさん [2023/11/21(火) 22:58:20.04 ID:AR1yXI4p.net] If (a = 1) Then '{ b = 1 '; '} Else '{ b = 2 '; '} End If どう?
196 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:58:40.18 ID:xeomrwBy.net] それVBAか?
197 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:34:59.56 ID:byPvCzkk.net] バレバレだと思ったらバレてなくてワロタ
198 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 13:42:56.19 ID:8a4yzyW0.net] >>193 どうでもいい
199 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 20:04:28.62 ID:bZOTy+QC.net] VBEで-キーを押すとExcelが落ちる 何で?
200 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 19:55:15.09 ID:IFAh3DJf.net] 床に置いたら落ちないんじゃね
201 名前:デフォルトの名無しさん mailto:sage [2023/11/27(月) 20:06:45.93 ID:y0lY01bz.net] 俺もそう思う
202 名前:デフォルトの名無しさん [2023/11/27(月) 20:19:28.03 ID:wYp6UIkr.net] なにごとも 低い位置においておけば落ちることはない
203 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 05:31:22.23 ID:0nQJ/yPv.net] Uiautomationでアプリに表示されてる文字を3万行くらい読み取ったら落ちた エクセルじゃなくてアプリの方が どういう理屈?
204 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 09:05:11.59 ID:F9HVG0++.net] イベントビューアーで何が起きたかぐらいは確かめなさい 再現性
205 名前:あるならタスクマネージャーのパフォーマンスでメモリなのかCPUなのか とかも アプリの表示文字3万行だけで、アバウト過ぎる [] [ここ壊れてます]
206 名前:デフォルトの名無しさん [2023/11/29(水) 10:10:43.50 ID:sD7VzCeS.net] 昔はintの最大が32767 だからそれ越える数を扱うと落ちるソフトがよくあったな
207 名前:デフォルトの名無しさん mailto:sage [2023/11/30(木) 09:29:06.87 ID:vgaDfHiB.net] 変数の値がマイナスとか変な数字になるだけじゃないの? その程度のことで落ちるの?
208 名前:デフォルトの名無しさん [2023/11/30(木) 10:14:04.34 ID:uCTIv0ls.net] マイナスの場所がアクセスできなかったり 永遠にloopの終了条件に達しないとか 結果が大きくなりすぎてメモリ不足とかなる
209 名前:デフォルトの名無しさん [2023/11/30(木) 12:17:27.34 ID:3oFcABR+.net] 古いexcelも最下行が少なかった
210 名前:デフォルトの名無しさん mailto:sage [2023/12/01(金) 02:42:24.09 ID:xLT/7JKF.net] このスレも落ちる
211 名前:デフォルトの名無しさん mailto:sage [2023/12/01(金) 16:31:31.03 ID:7wVpTT+J.net] 落ちないで
212 名前:デフォルトの名無しさん [2023/12/01(金) 17:06:11.81 ID:fwRU51B8.net] ハゲないで
213 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 09:27:15.99 ID:gVhM2KTB.net] 戦えよ
214 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 09:57:19.84 ID:vycJbAdX.net] Excel VBAって長時間経過すると一定間隔で一時的にCPU割り当てが止まったりする仕様ですか? プログレスバーもどきやマクロ経過時間を10秒毎に表示させているんですが、毎回2万件を超えたあたりから一時的に処理が停止しているみたいなんですが。
215 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 09:58:41.46 ID:vycJbAdX.net] 訂正。10秒毎にではなく10件処理する毎にです。
216 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 10:01:01.61 ID:OwcK4uEB.net] セルコピーの繰返しで条件付書式設定が多大になってるとか
217 名前:デフォルトの名無しさん [2023/12/02(土) 10:11:47.98 ID:0tC7Yjqi.net] excelで一万件以上のデータを扱わないで下さい
218 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 10:11:58.70 ID:vycJbAdX.net] 変数の価をセルへ記入する処理は繰り返し行っていますが条件付書式は設定していないしセルからセルへのコピー処理はしていません。 処理開始から20000件あたりまではスルスルと進んで行って20000件を超えたあたりから休み休みになるのが謎です。 ソース的には同じことを繰り返しているだけなんですけどね。 セルへ記入されていく行数は増えていくのでそのあたりが原因なんでしょうか。
219 名前:デフォルトの名無しさん [2023/12/02(土) 10:29:12.94 ID:gVhM2KTB.net] pcの性能じゃね 毎回起きるなら条件を変えてテストし発生条件をはっきりさせる
220 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 10:55:39.59 ID:5w2fWXOw.net] 計算式が2万行あるとか
221 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 10:58:44.05 ID:5w2fWXOw.net] 実行前に以下弄って画面更新を抑制してる? Application.ScreenUpdating Application.Calculation
222 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 11:01:53.10 ID:vycJbAdX.net] いえ、単なる文字列を上から下に向かってひたすら記入していくだけです。 記入する文字列を決めるためにVlookup関数の結果をフィルターして抽出された1行を文字列としてセルに記入してますが、Vlookup関数の数は固定で増えるわけでは無いのでCPU負荷も一定なんじゃないかと思います。
223 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 11:02:50.91 ID:vycJbAdX.net] >>218 Vlookup関数の結果を利用するのでそれはできないです。
224 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 11:03:58.36 ID:vycJbAdX.net] あ、すみません Application.ScreenUpdating は抑止したり解除したりを繰り返してました。
225 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 12:25:52.64 ID:dC73Xol+.net] 原因追及したいのなら 出力データを増やさずに同じ行に書き出すとか
226 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 13:23:33.03 ID:gVhM2KTB.net] そのうち前の担当が作ったとか言い出すんじゃね
227 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 17:03:47.70 ID:H7HADDQf.net] Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている アプデがいくつもある時など、進捗の%が進んだり止まったりなのを目にしたこともあるだろう エロ動画を何本もDLしてる時に同サイズなのにすぐ落ちるのといつまでも落ちないのがあるように 基本的にExcelは同じディレクトリにテンポラリーファイルを自動的に作る(Excelに限らないが そのファイルと相互に連携して「戻る」だの「処理を取り消す」だの「保存しない」だのを可能にしている システムファイルなので敢えて表示する指定をしないと通常は目に見えない 処理は目の前のファイルだけで無くそのシステムファイルにも反映されている いっぺんに大量の仕事をさせると「さすがに休ませろよ」と両方のファイルがブー垂れる←チンタラし出す for−nextとかLoopの中にDoEventを盛り込むと、多少は改善されるかも知れないしされないかも知れない https://www.tipsfound.com/vba/05doevents-vba https://qiita.com/nekohei/items/3fb066e267866bcae96c 正直なハナシ、おれには何が何だかさっぱり理解できないが呪文みたいなものなんだろう(違う
228 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 17:12:50.25 ID:hwp9WWnB.net] デフォルト10分に一回の自動回復用データの保存か
229 名前:デフォルトの名無しさん [2023/12/02(土) 19:21:37.99 ID:FUL/sgR0.net] >>224 馬鹿の妄想
230 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 19:43:05.04 ID:UnnytQXE.net] >>224 バカの長文ってホント的を得てるな 応答なしってのは文字通りマウス操作やキー操作に応答がない状態で、 なぜそれが起きるかは操作に応答する余裕もないくらい全集中して処理してるから リンク先に書いてあるのは定期的にマウスだのキーボードだの気にしろよって指示 ID:vycJbAdXが書いてることとは根本的に違う事象
231 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 21:20:16.63 ID:gVhM2KTB.net] 内容を理解しないで ○○すると速くなるとか、エラーを出なくするとかを検索で見つけたのを 鵜呑みにして呪文のように至る所に無意味なコードを貼るタイプかな
232 名前:デフォルトの名無しさん mailto:sage [2023/12/02(土) 22:41:07.55 ID:H7HADDQf.net] 「詳細設定」−「ハードウェア グラフィック アクセラレータを無効にする」にチェックしOK 使っていないアドインがあったらチェックを外す 可能性が高いのが、GPUがレッドゾーン タスクマネージャーのパフォーマンスでCPU・メモリ・ディスク 辺りはまったりと余裕ぶっこいてるのに、GPUがパンパン状態 これは増設できないマシンなら どうしようもない 一行目の処理の前後でこれを比較してみて変わったら原因はそこ フリーズする訳でも無くちゃんと完走するなら「こういうもんだ」で済ますのも大人の対応 高性能ギンギン!のマシンとCeleronマシンでも現象一緒とかなら尚更コチラ側では対処のしようも無い
233 名前:デフォルトの名無しさん [2023/12/03(日) 01:31:41.80 ID:MKV2NgOh.net] >Windowsの仕様として、重たい処理をさせてるときは中の人が勝手に一休みするようにできている そもそもこれが嘘 そんな仕様ねーよ
234 名前:デフォルトの名無しさん [2023/12/03(日) 06:53:42.28 ID:xZHPSaOR.net] >>203 そもそもintって何? データ型は正確に書かないと
235 名前:デフォルトの名無しさん [2023/12/03(日) 06:55:03.43 ID:xZHPSaOR.net] >>230 アイドリング中はデータの先読みをしているから、彼は勘違いして反対のことを言ってしまっているんだろうな。
236 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 09:55:11.40 ID:5HcnYZkn.net] 重たい処理で休むってCPU温度が上がったせいで速度落とすあれのことかと
237 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 11:08:35.63 ID:QTewqrs7.net] >>224 これはひどい
238 名前:デフォルトの名無しさん mailto:sage [2023/12/03(日) 11:10:09.56 ID:QTewqrs7.net] >>228 script kiddie
239 名前:デフォルトの名無しさん [2023/12/04(月) 15:12:23.07 ID:Nbpgvbo/.net] for each で処理するときにI列は処理を飛ばしたかったので for each rng in range if rng.column = 9 then goto skip 処理内容 という風にしたところすべての処理がスキップされてしまったので 以下のようにしたらうまくいきました。解決したんでよかったんですが どういった理由で結果が違うのでしょうか? if rng.column <> 9 then 処理内容
240 名前:デフォルトの名無しさん [2023/12/04(月) 15:18:26.28 ID:+hRuE00u.net] skip,endif,next の位置関係を省略すんな
241 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 16:25:34.26 ID:xc8M7hCZ.net] まーたどっかから質問パクって来た? https://oshiete.goo.ne.jp/qa/12821811.html 若干改変してるか RangeとCellsについて、小一時間問い詰められてみるのもいいかも https://sugoikaizen.com/excelvba/2_80/ ここでこうだよって書かれても身に付かないだろうし(おれもだし
242 名前:デフォルトの名無しさん [2023/12/04(月) 16:43:57.28 ID:Nbpgvbo/.net] 質問パクったわけではないですが確かに似てますね 省略しないと以下になります 処理の内容は同じです ■うまくいく方 For Each rng In Range(Cells(3, 7), Cells(m, n)) If rng.Column <> 9 Then If rng.Value = "-" Then dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value j = j + 1 End If End If ----------------------------------------------------------------- ■すべてスキップされてしまう方 For Each rng In Range(Cells(3, 7), Cells(m, n)) If rng.Column = 9 Then GoTo skipCol If rng.Value = "-" Then dataEx.Cells(j, i) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(rng.Row, 3).Value dataEx.Cells(j, i + 1) = ThisWorkbook.Sheets(dataEx.Cells(1, i).Value).Cells(2, rng.Column).Value j = j + 1 End If skipCol: End If
243 名前:デフォルトの名無しさん [2023/12/04(月) 16:46:57.68 ID:Nbpgvbo/.net] すみません最後両方とも「Next」付け忘れました
244 名前:デフォルトの名無しさん [2023/12/04(月) 17:25:36.52 ID:IJgpRS5M.net] >>239 馬鹿はGotoを使う法則 こんなこと瞬時にわからん頭ならやめとけ
245 名前:デフォルトの名無しさん mailto:sage [2023/12/04(月) 20:44:12.36 ID:iY+/6ufA.net] >>239 落ち着いてよく考えてみ
246 名前:デフォルトの名無しさん [2023/12/04(月) 21:18:11.46 ID:1Ww5lLLM.net] ネタだろうな
247 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 01:23:49.48 ID:9BlMohwu.net] よく知らないけど、この= は代入演算子か j = j + 1 この= は比較演算子か If rng.Column = 9 Then こんな= を、2つの意味で使う言語ってあるの? Ruby では、= は代入演算子で、== は比較演算子だけど
248 名前:デフォルトの名無しさん [2023/12/05(火) 01:30:03.25 ID:+1t+2z4I.net] Rubyの話にしたい例のキチガイ
249 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 06:54:56.45 ID:i0GvpvVS.net] >>244 馬鹿にはわからんよ ドンマイ
250 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 10:53:58.86 ID:3p/65ALc.net] 客観的にこの人はVBAができる人だと思ってもらうのに、VBAエキスパートのスタンダードを取るのは効果あり? 受験料高い上に対して難しくもない資格なんだけど、知らん人から見れば勘違いしてくれるかねぇ
251 名前:デフォルトの名無しさん [2023/12/05(火) 11:03:15.47 ID:3GhQ7B+D.net] あんなハリボテみたいな資格で勘違いしてくれるような会社に入りたいのか?
252 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 11:03:58.32 ID:0D+v86FO.net] 名刺に書くには恥ずかしくない?
253 名前:デフォルトの名無しさん mailto:sage [2023/12/05(火) 11:21:20.84 ID:3p/65ALc.net] >>248 ある大手の非IT子会社の求人にVBAやデータベース、PowerAutomateができれば尚可 みたいなことが書いてあるんよ まぁVBA自体は広く知られてるから他企業でも資格持ってれば多少有利になるかどうなのかと思ってね。 >>249 名刺に書くなら恥ずかしいわな
254 名前:デフォルトの名無しさん [2023/12/05(火) 20:07:16.92 ID:R0TA+AvY.net] >>239 自分でステップ実行してどのように処理されているか確認してみては。本当に分からないならif文の仕組みを勉強するところから始める必要があるかと。
255 名前:デフォルトの名無しさん mailto:sage [2023/12/06(水) 23:52:59.21 ID:Y0R/nynM.net] >>239 って ここに張り付けたからインデント消えているのか? 実際のコードもインデントなしで書いてそうだな
256 名前:デフォルトの名無しさん mailto:sage [2023/12/07(木) 01:27:12.14 ID:J0zHJsHa.net] >>252 ちゃんとインデントついてるぞ
257 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 09:52:24.49 ID:b059r/QR.net] フィルターの設定について質問させてください。各年の1月のデータを取得したいのですがうまくいきません。 手動だと、[日付フィルタ]から[期間内の全日付で1月を選んでできます。同じようにしたいのですがどうすればよいでしょうか? ws.Rows("1:1").AutoFilter ' C列日付のフィルター条件を設定 Dim oldestYear As Integer oldestYear = 2021 ' 最も古い年を指定 ' 1月のデータを含むフィルター条件を設定 Dim filterCriteria As String filterCriteria = ">=01/01/" & oldestYear & " AND <02/01/" & (oldestYear + 1) ' C列で条件に基づいてフィルタリング ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=filterCriteria
258 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 11:43:28.11 ID:/HCFQ2uK.net] 手動でうまくいくなら マクロの記録→手動操作→記録終了 とすればマクロできてないか
259 名前:デフォルトの名無しさん mailto:sage [2023/12/10(日) 22:40:23.08 ID:sT365tcs.net] Stringなの?日付は
260 名前:デフォルトの名無しさん mailto:sage [2023/12/11(月) 20:35:30.67 ID:bj1MKtN8.net] Integerじゃね?(適当
261 名前:デフォルトの名無しさん mailto:sage [2023/12/11(月) 20:37:58.60 ID:dC/0oU5n.net] 以外にもDecimal
262 名前:デフォルトの名無しさん mailto:sage [2023/12/11(月) 23:17:25.43 ID:D21ZDkpy.net] 意外?
263 名前:デフォルトの名無しさん [2023/12/12(火) 07:24:28.25 ID:oC/8xaVQ.net] >>254 そのフィルター条件の書き方はどこかで紹介されてたもの? Criteria1に複数条件を入れず、分ける必要があるみたい ws.Columns("C:C").AutoFilter Field:=3, Criteria1:=">=01/01/" & oldestYear, Operator:=xlAnd, Criteria2:="<02/01/" & (oldestYear + 1)
264 名前:デフォルトの名無しさん [2023/12/12(火) 11:29:55.50 ID:TixshqYj.net] ユーザーフォームをワークブックから指定するにはどのようにすればいいですか? セルだとこんな書き方をしてます Workbooks(”book1”).Worksheets("Sheet1").Cells(1,1) そこで Workbooks(”book1”).UserForm1.Label1 のように書いたらエラーです 検索しても、ブックを指定せず単にUserForm1とだけ書いている事例しか見当たりませんでした
265 名前:デフォルトの名無しさん [2023/12/12(火) 18:44:33.33 ID:isBhbmiY.net] 「やまぶきいろ」って ヤマブ黄色かと思ってたら 山吹色だったんですね。 まあそれだと「ヤマブ」というのが意味不明なんだけど。
266 名前:デフォルトの名無しさん mailto:sage [2023/12/12(火) 18:47:07.92 ID:EvQ2Bvwd.net] お馬鹿自慢要らない
267 名前:デフォルトの名無しさん mailto:sage [2023/12/12(火) 21:52:49.64 ID:FzkyMEiq.net] まあ将来はマクロVBAは廃止されると予想されるからデカイ顔できるのも今のうちだぞ
268 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 09:34:17.90 ID:0IbkX0L9.net] VBベースじゃないほうがこれからは良いだろうしなあ
269 名前:デフォルトの名無しさん [2023/12/13(水) 10:08:54.21 ID:fb2rzu10.net] 仮にマクロ無くなってもでかい顔するやつはする
270 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 10:20:57.24 ID:ZzGWLSGP.net] >>261 開いてるファイルからVBAを使って他のファイルのユーザーフォームを操作したい みたいな要望に読めるけど、こういうことかな? https://www.chishikinosoukonoseiri.com/entry/2019/06/02/excelvba-designer-another-book-userform-operation この人も苦労したみたいだけど、結果が正しいのか正統派の記述方式なのかもよくわからん Designer なんて今まで食べたこと無いし しかもバージョンが若干古い? IE絡みのオブジェクトっぽいし、IE亡き今、通用するのか どうかも不明 ま、サイトは今年の春に更新されてるから使えなくなったなら泣き言も 書かれていそうだがそれは無いからだいじょぶか? 行き詰ってるなら試してみる価値はありそう
271 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 10:52:16.86 ID:+QBADPFJ.net] VBA廃止でpowerqueryの時代が来る?
272 名前:デフォルトの名無しさん [2023/12/13(水) 11:21:09.91 ID:bFxo3E2h.net] >>267 レスありがとうございます 質問の意図はもっと単純で、複数ブックが開いているとき、Book1のマクロでcells(1.1).value=1みたいなコードを実行したとして、 実はBook2がアクティブだとBook1じゃなくてBook2の方が書き換わっちゃう けど、操作したいセルをワークブック、ワークシートの順で書いとけば特定できる ならば、複数ブックが開いていて、各ブックに同名のUserForm1があるとどうなるの? どのブックかの明示は必要?書き方は? ということでした (これを書いた方が良かったですね) んで、カキコした後、試しにBook1、Book2にそれぞれ同名のUserForm1を作ってブックが2つ開かれてる状態にしても特に何も起きない Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザーフォームが開く じゃあ、どのブックかの明示は不要?ほかの問題は起きないの?というのが現在の疑問です マイクロソフトのリファレンスくらいは見ているのですけど理解できていません・・ 以前、オブジェクト階層樹形図のようなものがあった気がするけど、それも見つけられず・・ https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/userform-object
273 名前:デフォルトの名無しさん [2023/12/13(水) 11:21:15.74 ID:hoISaMFl.net] >>268 このハゲ!
274 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 11:26:50.73 ID:bFxo3E2h.net] >>269 一般のネットブラウザだと字がちいさいと思います、すみません スレチですが時々発生するのも疑問です
275 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 13:47:39.13 ID:b26gKOXL.net] >>269 ブックじゃなくてプロジェクトのメンバー 例えばプロジェクト名がVBAProject1で、UserForm1っていうフォームモジュールがあるとして dim a as VBAProject1.UserForm1 set a = new VBAProject1.UserForm1 で指定できる プロジェクト名はメニューのツール→(プロジェクト名)のプロパティとかから設定可能
276 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 13:51:08.21 ID:b26gKOXL.net] こういうのはオブジェクトブラウザから見ると簡単に確認できるよ 今回なら適当なモジュール内で dim a as UserForm1 と書いてUserForm1を右クリック→オブジェクトブラウザを選択すると 「Private Class UserForm1 VBAProject1 のメンバー」 と下部の説明欄に表示される
277 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 14:05:40.64 ID:ZzGWLSGP.net] >>269 じゃあ、みんな大好きオフィスTANAKAさんのこれで officetanaka.net/excel/vba/tips/tips103.htm 変数に入れとけば他のファイルには影響出ないんじゃないかな、と >Book2をセル選択状態にして、Book1でUserForm1.ShowとやるとBook1側のユーザー フォームが開く これは、Book1で・・の時点で選択状態が移行しちゃってるんじゃないのか? あと、このページの中ほどで説明してるけど https://www.kurumico.com/excel-vba-userform-show-2/4065/ >・実は、事前にメモリにロードされていないまま Showメソッドで UserForm を >表示する場合、自動的にメモリにロードされているんです。 ここがミソか いくつもファイルを開いて作業することが多いケースなら、Show では無く Load を使えと 最後にちゃんとUnLoadするのも忘れずに
278 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 15:19:48.92 ID:bFxo3E2h.net] 皆さんありがとうございます >>274 >選択状態が移行しちゃってるんじゃないの それはないと判断してます、というのは Book1に下記コードをかいておき、Book2のセルB2とかを選択した状態で、VBエディタの三角ボタンで実行すると、同名のユーザーフォームのうちBook1側が表示されるが、セル(1,1)はBook2側が操作されるからです Sub 試験用() UserForm1.Show Cells(1,1).Value=1 End Sub >>272 VBAProjectの下にあることは分かりました オブジェクトブラウザも見ましたし、VBAProject1. と打ち込んで、入力サジェストにUserFormが出てくることも確認しました で、2つのブックのプロジェクトも同名のVBAProject1にして、先ほどのコードのshowの行を下記に変えて実行しても結果は同じでした VBAProject1.UserForm1.Show つまり、指定が無いとシートやセルはその時アクティブなものを操作するけど、ユーザーフォームは(サブプロシージャとかも?)プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない、ということですかね
279 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 15:24:52.44 ID:bFxo3E2h.net] >>274 xボタンで閉じても「メモリ上から削除」されるんですよね、もう一度落ち着いて読み返して見ますけど
280 名前:デフォルトの名無しさん mailto:sage [2023/12/13(水) 22:46:03.48 ID:b26gKOXL.net] >>275 >>プロジェクト内から選択されるので、別ブックが開いていて、偶然同名のものがあっても問題ない その通りです。 参照設定やApplication.Runなどで明示的に他プロジェクトのメンバーを呼び出さない限り、 そのプロジェクト内では自らのプロジェクトのメンバーしか呼ばれません。 ちなみに UserForm1 が変数名ではなくクラス名の場合、自動的にインスタンス化されたフォームを参照します。 プロジェクトのメンバーはあくまでクラス(≒型レベル)であり、インスタンス(≒値レベル)ではないという事は注意してください。 また、「指定が無いとシートやセルはその時アクティブなものを操作する」は厳密には、省略されたと判断されたら親オブジェクトを補完しようとすると考えた方がいいです。 例えばそのスコープ内でCellsという名前を定義した場合、 Cells(1,1).Value と書いても省略されたと判断されずにその定義したオブジェクトが参照されます。 定義されていない場合は省略されたと判断され Application.ActiveSheet. が頭に追加されます。
281 名前:デフォルトの名無しさん mailto:sage [2023/12/14(木) 09:05:18.07 ID:3Jt9wkWi.net] >>277 詳しくありがとうございます 疑問だった同名ユーザーフォームの件はまずは解決です 後半の「スコープ内でCellsという名前を定義・・」の部分を練習問題と思って、 Book2選択状態でもBook1でCells(1,1).Value=1を実行してBook1側セルが操作されるコードを考えてみます ご説明頂きながらこちらの理解が足らない状態です,もし、そーじゃねーよ、ということなら恐縮ですがご指摘頂ければ幸いです
282 名前:デフォルトの名無しさん [2023/12/21(木) 07:46:49.25 ID:VfXlm8CZ.net] 会社の先輩が 「サーバーがコケた」と言って魔した。 これはどういう意味なんですか?擬人法だとは思うけど。
283 名前:デフォルトの名無しさん [2023/12/21(木) 07:46:58.32 ID:VfXlm8CZ.net] ま
284 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 08:07:57.44 ID:5xKtyKw4.net] >>279 板違い
285 名前:デフォルトの名無しさん [2023/12/21(木) 08:44:41.65 ID:VfXlm8CZ.net] Excelの先輩が 「サーバーがコケた」と言ってました。 これはどういう意味なんですか?擬人法だとは思うけど。
286 名前:デフォルトの名無しさん [2023/12/21(木) 08:45:07.84 ID:VfXlm8CZ.net] >>281 このハゲ!
287 名前:デフォルトの名無しさん [2023/12/21(木) 10:36:38.99 ID:xlAPeSS0.net] >>279 ウォーターサーバーかな?
288 名前:デフォルトの名無しさん [2023/12/21(木) 11:39:20.36 ID:VfXlm8CZ.net] >>284 そうみたいです。 「コケちゃいました。だから金メダル取れませんでした。」という意味だって。
289 名前:デフォルトの名無しさん [2023/12/21(木) 15:11:32.27 ID:UFnvFSs2.net] 現在計算が自動なのか手動なのかを判断する変数は見つけたのですが、これをリアルタイムで画面に出力する方法ってありますでしょうか? イメージとしては条件付き書式で現在の計算が自動なら青、手動なら赤を表示するみたいなのを実装したいです
290 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 19:59:01.09 ID:3GSHThlW.net] その変数の値をセルに表示するサブルーチンを作って1秒毎に実行する
291 名前:デフォルトの名無しさん mailto:sage [2023/12/21(木) 20:55:44.88 ID:Zzwx7STl.net] 毎回必ず自動計算にしてしまうのはだめなの?
292 名前:デフォルトの名無しさん mailto:sage [2023/12/22(金) 08:39:48.76 ID:FajFP1p6.net] >>286 Excelでリアルタイムに更新する意味がない 自分で変更するなら変更時にセルにも値出すように組めばいい
293 名前:デフォルトの名無しさん mailto:sage [2023/12/22(金) 17:31:18.37 ID:ldIFfRbs.net] VBAは使わないが、 Webやローカルのデータを 外部参照するクエリーを 秒単位で更新させる機能はある。 あまり頻度を上げるとサーバに負荷をかけてしまうので、 確認しながら慎重に使っているが。