!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part60
https://mevius.5ch.net/test/read.cgi/tech/1552736349/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
Excel VBA 質問スレ Part61
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 2b2b-GhCw)
2019/04/25(木) 23:41:03.61ID:rni/4bMj0258デフォルトの名無しさん (ブーイモ MM5e-gZI7)
2019/05/16(木) 12:51:40.47ID:YRbGgWK/M >>257
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る
基本それだが、ずっと掴んでるやつがいるとバグ修正や機能追加のときに困る
259デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/16(木) 14:16:39.46ID:5BGNguvP0 >>258
読み取り専用にしてもダメか?
読み取り専用にしてもダメか?
260デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/16(木) 14:16:55.41ID:5BGNguvP0 もちろん自分が編集する時は読み取り専用解除ね
261デフォルトの名無しさん (ワッチョイ b0f1-tIz5)
2019/05/16(木) 14:43:29.72ID:wWtnEH3A0 コード書く画面を
背景は黒に、文字は白に、する方法を教えれ
背景は黒に、文字は白に、する方法を教えれ
262デフォルトの名無しさん (ワッチョイ e602-bDB9)
2019/05/16(木) 15:42:20.38ID:Z2BhGmok0 ツール -> オプション -> エディターの設定
263デフォルトの名無しさん (オイコラミネオ MM71-cyZN)
2019/05/16(木) 16:12:18.52ID:BYfNVo3YM264デフォルトの名無しさん (アメ MM35-C3gu)
2019/05/16(木) 18:04:23.53ID:rNkkKl6PM みんな一々シャットダウンするのか?
スケジュールでコピーだろ
スケジュールでコピーだろ
265デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/16(木) 18:58:39.63ID:5BGNguvP0266デフォルトの名無しさん (ササクッテロ Spea-Ww5O)
2019/05/16(木) 19:18:23.52ID:UtWIeHx/p マクロ終了時にマクロ開始から終了までにかかった時間が秒までメッセージボックスに表示するってできる?
267デフォルトの名無しさん (ブーイモ MM5e-gZI7)
2019/05/16(木) 19:18:36.52ID:rD+4K505M268デフォルトの名無しさん (ワッチョイ acce-EL+e)
2019/05/16(木) 19:23:31.84ID:UPwRXvuL0 >>266
できる
できる
269デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/16(木) 19:26:21.47ID:5BGNguvP0270デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/16(木) 19:26:44.10ID:5BGNguvP0 >>268
URL春だけでもいいから教えてあげたらw
URL春だけでもいいから教えてあげたらw
271デフォルトの名無しさん (ササクッテロ Spea-Ww5O)
2019/05/16(木) 19:31:25.53ID:UtWIeHx/p272デフォルトの名無しさん (アメ MM35-C3gu)
2019/05/16(木) 20:10:17.30ID:rNkkKl6PM >>267
掴んでたらスルー
掴んでたらスルー
273デフォルトの名無しさん (ワッチョイ 46da-EL+e)
2019/05/16(木) 22:17:19.76ID:aE3zz80C0 >>256
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。
で、更新させたい時は、わざと参照用ファイルを消しておく。
起動時に何らかのファイルを参照するようにしておいて、
参照出来たらそのままOK。
出来なかったら、新たにファイルをDLする仕組みにする。
で、更新させたい時は、わざと参照用ファイルを消しておく。
274デフォルトの名無しさん (ワッチョイ 328c-gZI7)
2019/05/16(木) 22:24:00.58ID:yzKWQsxd0 >>273
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね
xlamを共有するならそこのWorkbook_Open にそういう処理を入れておけばいいでしょうね
275デフォルトの名無しさん (ワッチョイ 7c7c-qZMj)
2019/05/16(木) 23:04:51.54ID:kfbhC4dW0 >>256
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか
最新バージョン書いたテキストかなんかを共有に置いといて、起動時に見に行ってそれより古かったら更新促す警告出すとか
276デフォルトの名無しさん (アメ MM35-C3gu)
2019/05/17(金) 02:52:09.97ID:gYF5enuVM Excelの起動時、マクロを実行させる:Excel(エクセル)マクロ
https://www.excel.usefulhp.com/excel-macro/excel-macro50.html
で良いだろ
https://www.excel.usefulhp.com/excel-macro/excel-macro50.html
で良いだろ
277デフォルトの名無しさん (オッペケ Srea-SJOa)
2019/05/17(金) 09:22:35.60ID:YDbG3YPmr 共有パス見て実行とか大変そう面倒そうて主観があったけども
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう
Application.Run "共有のパス!マクロ名 "
の1行でいけちゃうもんなのか…?
とりあえず試してみる
すでに誰かが開いてる?とか参照できないときの対処も色々試してみるありがとう
278デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/17(金) 09:26:03.52ID:PC2o5teB0279デフォルトの名無しさん (ワッチョイ 3e68-EL+e)
2019/05/17(金) 09:26:30.66ID:PC2o5teB0 なんか日本語変だ
まぁいいか
まぁいいか
280デフォルトの名無しさん (ササクッテロ Spea-Ww5O)
2019/05/17(金) 12:25:15.46ID:cM5KCNydp ちょっと筋外れるかもしれないけどvbeに行間なく詰めて書いたコードの選択範囲に1行ずつ改行入れるいい方法ない?
281デフォルトの名無しさん (ワッチョイ 9b5f-KFp3)
2019/05/17(金) 12:28:45.29ID:gxvYGXpT0 そんなのできない。サクラエディタで置換して貼り付けろ
282デフォルトの名無しさん (ワッチョイ 9663-HOgd)
2019/05/17(金) 22:00:27.88ID:BHkVW2uG0283デフォルトの名無しさん (ワッチョイ 7c7c-qZMj)
2019/05/18(土) 00:21:37.50ID:qrQ2t1Xp0 >>280
改行コードを改行コード+改行コードで置換
改行コードを改行コード+改行コードで置換
284デフォルトの名無しさん (ワッチョイ 3591-0dpX)
2019/05/18(土) 00:55:20.52ID:pDLl57eM0 コードウィンドウ内の改行はCRLFじゃなくてLFだった筈。
そんなに難しくない。
でもこれが動く設定はマクロウィルスも動くから危険だよ。
Sub test()
Dim strCode As String
Dim stRW As Long
Dim stCL As Long
Dim edRW As Long
Dim edCL As Long
With Application.VBE.ActiveCodePane
.GetSelection stRW, stCL, edRW, edCL
strCode = .CodeModule.Lines(stRW, edRW - stRW + 1)
.CodeModule.DeleteLines stRW, edRW - stRW + 1
.CodeModule.InsertLines stRW, Replace(strCode, vbLf, vbLf & vbLf)
End With
End Sub
そんなに難しくない。
でもこれが動く設定はマクロウィルスも動くから危険だよ。
Sub test()
Dim strCode As String
Dim stRW As Long
Dim stCL As Long
Dim edRW As Long
Dim edCL As Long
With Application.VBE.ActiveCodePane
.GetSelection stRW, stCL, edRW, edCL
strCode = .CodeModule.Lines(stRW, edRW - stRW + 1)
.CodeModule.DeleteLines stRW, edRW - stRW + 1
.CodeModule.InsertLines stRW, Replace(strCode, vbLf, vbLf & vbLf)
End With
End Sub
285デフォルトの名無しさん (ワッチョイ 46da-EL+e)
2019/05/18(土) 19:27:39.15ID:4RzeW/b40 専用のメソッドがあるのが凄いわ。
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?
何を想定して用意してあるんだろう?
プログラムがプログラムを書き直すAIにでも使うのか?
286デフォルトの名無しさん (ワッチョイ 2335-EL+e)
2019/05/18(土) 20:16:07.59ID:8gQadrhx0 Application.VBE.ActiveCodePane
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね
こんなの合ったのか
PaneはPanelかと思ったら、ペインの事なのね
287デフォルトの名無しさん (ブーイモ MM98-F0IB)
2019/05/18(土) 20:29:02.38ID:P5JmHxRDM VBEを拡張するためのオブジェクト群が用意されてるんだよね
288デフォルトの名無しさん (ワッチョイ 6ee6-EL+e)
2019/05/19(日) 09:22:38.02ID:MCPGuHEx0 Excel4マクロは自己書き換え自由だったから
機能的に負けるわけにはいかなかったんじゃね?
機能的に負けるわけにはいかなかったんじゃね?
289デフォルトの名無しさん (アークセー Sx5f-4bVB)
2019/05/19(日) 11:43:42.11ID:1xMNIuy/x 配布済マクロの修正パッチとかで大量のファイルや行を一括修正したいときは便利
290デフォルトの名無しさん (アウアウエー Sa6a-9mjA)
2019/05/19(日) 12:03:05.34ID:igxNvdy7a 単価の低そうな涙ぐましい仕事だな
291デフォルトの名無しさん (ワッチョイ 2335-EL+e)
2019/05/19(日) 12:39:30.70ID:gILK5dpZ0 マクロ4はできる人がいない+やりたくないから単価超高いぞ
で、単価高くしても足が出る・・・
で、単価高くしても足が出る・・・
292デフォルトの名無しさん (ササクッテロ Spea-Ww5O)
2019/05/21(火) 19:13:05.44ID:7gg6L6p3p 実行から終了まで数分かかるマクロを途中で止める方法ないですか?f4押したら「処理を止めました」のメッセージボックスとともに停止するとか。
293デフォルトの名無しさん (ワッチョイ 302b-qZMj)
2019/05/21(火) 19:31:11.94ID:OX+uPiO40 Break
ESC
ESC
294デフォルトの名無しさん (ワッチョイ 0e34-Wp9y)
2019/05/21(火) 19:37:07.71ID:K+4dE9j10 ループが長いならDoEvent入れておいて
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい
msgbox "終了します"とendだけ書いたのを起動できるボタンどっかに置いとけばいい
295284 (ワッチョイ 3591-H0mX)
2019/05/21(火) 20:04:23.19ID:MD1oUmkY0 ESCやBreakで止まるなら良いけど、それで止まらない処理ならウィンドウESC押しながらタスクバー上でマウスでウィンドウの切り替えをすると止まる。
どっかのブログで見て知ったけど役に立ってる。
どっかのブログで見て知ったけど役に立ってる。
296デフォルトの名無しさん (ワッチョイ d98e-lTii)
2019/05/21(火) 21:15:28.57ID:QvaiZxJv0297デフォルトの名無しさん (ササクッテロ Spea-Ww5O)
2019/05/21(火) 21:30:20.69ID:7gg6L6p3p ほー
明日試してみます
明日試してみます
298デフォルトの名無しさん (ワッチョイ 46da-EL+e)
2019/05/21(火) 22:08:13.75ID:R92gi7e40 2009/12/16に公開って何だよ。
20年くらい前に見たぞそれ。
20年くらい前に見たぞそれ。
299デフォルトの名無しさん (アメ MM35-C3gu)
2019/05/22(水) 06:58:44.20ID:SD95iW5CM300デフォルトの名無しさん (ワッチョイ 3c0a-EL+e)
2019/05/22(水) 09:27:28.15ID:ztZYN21m0 セルの値を数式に代入って無理でしょうか?
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです
たとえばA1セルに乱数が入ってた場合に
どっかのセルに =A2-乱数 という数式を代入したい感じです
301デフォルトの名無しさん (ブーイモ MM5e-Wp9y)
2019/05/22(水) 09:41:17.90ID:5+y7OppMM =A2-A1
302デフォルトの名無しさん (ブーイモ MM5e-gZI7)
2019/05/22(水) 09:43:43.65ID:ogyeLG/uM 演算あり値コピーの話?
303デフォルトの名無しさん (ワッチョイ 3c0a-EL+e)
2019/05/22(水) 09:52:11.18ID:AHnUJ8Jk0 いやセル番地じゃなくて値を数式に代入したい感じです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入
A1セルが387だとしたら
=A2-387
説明下手糞で申し訳ないです
たとえばA1セルに2,134という数字が入ってた場合に
=A2-2,134 という数式をどっかのセルに代入
A1セルが387だとしたら
=A2-387
説明下手糞で申し訳ないです
304デフォルトの名無しさん (ワッチョイ 45f9-M9xx)
2019/05/22(水) 09:54:20.78ID:hC9fKDDe0305デフォルトの名無しさん (ワッチョイ 45f9-M9xx)
2019/05/22(水) 10:00:56.85ID:hC9fKDDe0306デフォルトの名無しさん (オッペケ Srea-NknS)
2019/05/22(水) 11:59:27.46ID:zi+TqRd2r そもそも数式はスレ違いだろ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ
VBA関係ないならどっかエクセルの使い方の板かスレかさがせ
307デフォルトの名無しさん (ササクッテロ Spea-53Kk)
2019/05/22(水) 13:17:58.06ID:/GezpU1zp >>305
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?
それなら確かに関数じゃできないよね
A1セルの乱数結果が現時点で387だとしたら
変数(仮にrとする)に、387を格納して
ほかのセル(仮にB1とする)に"=A2-r(中身387)"を入力したいって事?
それなら確かに関数じゃできないよね
308284 (ワッチョイ 3591-H0mX)
2019/05/22(水) 13:58:22.19ID:WDej9GuM0309デフォルトの名無しさん (ワッチョイ 45f9-e7qI)
2019/05/22(水) 16:05:46.41ID:hC9fKDDe0 >>307
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな
それに意味あると思えない、乱数なんてふつうは仕事に使わない
例えば、学校の先生あたりが、引き算足し算などの問題を自動的に作りたいとか
であれば、A列に乱数1の結果をB列に乱数2の結果を
C列に計算式を、D列に回答をで別シートなどで問題文を作る
このぐらいだな
310デフォルトの名無しさん (ブーイモ MMfd-Wp9y)
2019/05/22(水) 18:12:45.70ID:j7jZt3jJM 説明下手糞ってレベルじゃねぇぞ…
311デフォルトの名無しさん (ブーイモ MMfd-gZI7)
2019/05/22(水) 18:48:51.39ID:RRuRLAJCM312デフォルトの名無しさん (アメ MM35-C3gu)
2019/05/22(水) 19:16:53.47ID:CZzIGWUTM313デフォルトの名無しさん (ワッチョイ 46da-EL+e)
2019/05/22(水) 22:59:24.50ID:bxcYYOqD0 もうあれだ。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。
ここは、何の用途に使うのか当たられたやつが優勝スレにしよう。
314デフォルトの名無しさん (ワッチョイ d98e-lTii)
2019/05/22(水) 23:13:17.16ID:K7mhmRd90 完全乱数を使って円周率の計算をする
315デフォルトの名無しさん (ブーイモ MMcf-cspy)
2019/05/23(木) 07:43:57.81ID:mLR+BkfhM 別に用途は何でもいいさ
興味ゼロってわけじゃないけど
興味ゼロってわけじゃないけど
316デフォルトの名無しさん (ワッチョイ df01-Fpyl)
2019/05/23(木) 10:22:05.81ID:WDXUv9KM0 こっちで作って欲しいと言われたものをつくってると
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう
っていうことないっすか
もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって
そんなもの作られたら困る
楽になって人が減らされると困る、と古参がちくちく
この古参、自分の作業を楽にしたい時には
これがもう偉そうな態度で、「作らせてやる」とでも言わんばかりに頼んでくる
どうしたいんよもう
っていうことないっすか
もう面倒なんで職場で作るのやめようかな
すんません落書きしちゃって
317デフォルトの名無しさん (ワッチョイ 2701-7h+o)
2019/05/23(木) 10:56:07.55ID:cSCM+dO10 厚労省で配布されている
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/000116890_00001.html
にある
https://www.mhlw.go.jp/content/10900000/000494621.xlsm
なんだけど、内容は単純で
1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する
なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。
というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。
じゃあどうする、と言われたらみなさんならどうしますか?
同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが
後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
https://www.mhlw.go.jp/stf/seisakunitsuite/bunya/000116890_00001.html
にある
https://www.mhlw.go.jp/content/10900000/000494621.xlsm
なんだけど、内容は単純で
1件いくらの検査があって、件数を入力すれば請求書が作成されるというもの
1シート=1自治体なので、複数の自治体へ請求する場合は、ユーザーがシートコピーして作る
VBAで各シートを集計して総括表に転写する
なんだけど、VBAみて
変数が多すぎてコーディング中に間違えても気づかんだろってのと
引っ張ってくるセルをConstで決め打ちしてるけど
これ後のメンテナンスでセル一個挿入することになったら修正大変やん と思いました。
というか、エラーメッセージの所で間違えて
行を表示すべきところを列表示しているけど
これこそ変数多すぎて分かりにくくした事が原因だと思います。
じゃあどうする、と言われたらみなさんならどうしますか?
同じ形の複数の2次元の表を合計するだけなんだから
スタート地点とゴール地点決めてやって
後はずらしていけばいいやんと思うのですが
後、小数とか負の値ぶっこんでも動作するのはモヤモヤするんだけど
まぁこの辺やりだしたらキリがないので使わせる相手によってどうするかは変えますかね
318デフォルトの名無しさん (ブーイモ MMcf-cspy)
2019/05/23(木) 11:43:15.47ID:mLR+BkfhM >>316
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。
こういう話もあるし
https://lite.blogos.com/article/376203/
義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ、
と教えてやればいい。
もしかしたら「手下にプログラミングさせればいい」と勘違いするかも知れないが、
それでは通用しないよと言ってやろう。
こういう話もあるし
https://lite.blogos.com/article/376203/
319デフォルトの名無しさん (ワッチョイ 07f9-psCD)
2019/05/23(木) 16:11:36.77ID:hFcQqqxb0320デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/23(木) 16:13:59.49ID:X/3FpVKz0 >>316
その古参の上司に報告しろ
その古参の上司に報告しろ
321デフォルトの名無しさん (ワッチョイ 07f9-psCD)
2019/05/23(木) 16:14:38.98ID:hFcQqqxb0 >>317
すまん、リンク先を読む気もしない
すまん、リンク先を読む気もしない
322デフォルトの名無しさん (ドコグロ MM9f-BVry)
2019/05/23(木) 17:56:30.55ID:pyUsEGpsM >>318
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
>義務教育でプログラミングを扱うようになって、自分の仕事くらい自分でプログラミングできないようでは大変な事になるよ
脅かすことでプログラミングができるようになるとはおもいませんが…
プログラミングって極めて創造的な作業ではないでしょうか、似たようなものは数学の証明問題だと思いますが証明問題を脅かして解けるようになるとは思えません
324デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/23(木) 20:39:50.63ID:X/3FpVKz0 機械学習やweb系ならともかく、
VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ
ルーチンワークを自動化させてるだけ
VBAレベルなら極めて事務的な仕事だろう。どこにも創造性なんて無いよ
ルーチンワークを自動化させてるだけ
326デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/23(木) 21:06:10.14ID:X/3FpVKz0 >>325
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度
面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
一本道だよ、全然難しくない
強いて言えば例外を先に全部列挙した上でシステムに放り込むという順序の変更がある程度
面倒なのは仕様変更と、使いにくいというオバハンの嬌声。オバハンにalt+F8は覚えさせたけど、まぁそれぐらい
327デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/23(木) 22:12:48.96ID:0Fgm70+GM まあ、自己満足で終わるなら簡単だな
おばはんにも満足いくように作るんだよ
おばはんにも満足いくように作るんだよ
328デフォルトの名無しさん (ワッチョイ 67da-dCWx)
2019/05/23(木) 22:27:50.56ID:49rcJhkB0 >>317
コンスト過ぎてワロタ。
コンスト過ぎてワロタ。
329デフォルトの名無しさん (ワッチョイ bf8c-cspy)
2019/05/23(木) 22:55:08.55ID:EGX4zlJj0330デフォルトの名無しさん (ワッチョイ a794-jqLE)
2019/05/24(金) 01:42:55.95ID:9kKOGm+S0 Excel2016にてpersonal.xlsbに「保存せず閉じて開き直すマクロ」を作ったところ挙動が変です
Sub ReOpen()
Dim wb As Workbook
Dim path As String
Set wb = ActiveWorkbook
path = wb.fullName
'※1
If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes
Exit Sub
End If
wb.Close(False)
Application.Wait([Now() + "00:00:01"])
'※2
Workbooks.Open(path)
End Sub
このマクロ自体は動くのですが、※1のIf〜EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます
また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます
対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです
MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
Sub ReOpen()
Dim wb As Workbook
Dim path As String
Set wb = ActiveWorkbook
path = wb.fullName
'※1
If MsgBox("本当に変更を取り消しますか?", vbYesNo) <> vbYes
Exit Sub
End If
wb.Close(False)
Application.Wait([Now() + "00:00:01"])
'※2
Workbooks.Open(path)
End Sub
このマクロ自体は動くのですが、※1のIf〜EndIfを消すと※2のOpen実行直後にExcelが通知無く落ちます
また、※1※2を両方消してマクロ実行した後、手動でブックを開き直すとやっぱりExcelが落ちます
対象のブックはフォームやマクロを含んだ3MB程度のxlsmファイルです
MsgBox出さないだけでなぜ不安定になるのか、思いつく原因を教えて頂けると幸いです
331デフォルトの名無しさん (ワッチョイ a794-jqLE)
2019/05/24(金) 01:44:27.87ID:9kKOGm+S0 あ、Ifの末尾のThen忘れたので脳内で補完してください
332デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/24(金) 06:40:29.33ID:/lvzTPqGM >>331
ハイ イイエ が逆なのも利用者が自動変換するんですね
ハイ イイエ が逆なのも利用者が自動変換するんですね
333デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/24(金) 06:54:20.73ID:/lvzTPqGM >>332
すまん、継続がキャンセルか
すまん、継続がキャンセルか
334デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/24(金) 09:59:52.88ID:RAYiE+wA0 >>330
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ
カンで答えると、再計算が邪魔してるような気がする
・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])
・まっさらなブックで試してみる
2019で試したけど落ちなかった
> Application.Wait([Now() + "00:00:01"])
これを抜いても同じ
カンで答えると、再計算が邪魔してるような気がする
・一度再計算や描画、イベントを切ってみてはどうかな
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
・あとはこの部分のウェイトをもう少し長くする
>Application.Wait([Now() + "00:00:01"])
・まっさらなブックで試してみる
335デフォルトの名無しさん (ワッチョイ 67da-dCWx)
2019/05/25(土) 07:54:51.56ID:TRopVMeK0 アドインって、ファイルを閉じたら、
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。
一緒に閉じられるものだと思ってたけど、
VBA実行中は残るということか。
一緒に閉じられたら、途中で止まっちゃうからな。
336デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/25(土) 08:55:38.15ID:nkVbmNSl0 vba実行中というかずっと残るっぽい
337デフォルトの名無しさん (ワッチョイ c7da-dCWx)
2019/05/25(土) 09:55:42.63ID:wPp02VNQ0 エクセルの機能に追加してるからな
アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね
アドイン使ったファイルをアドインがないエクセルで編集すると壊れるよね
338デフォルトの名無しさん (ワッチョイ c7da-dCWx)
2019/05/25(土) 10:07:50.37ID:wPp02VNQ0339デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/25(土) 10:14:01.11ID:D2XIJyZK0 Excelに限って言えば、Excel自体に変な仕様が多い
これが男を惑わせる
これが男を惑わせる
340デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/26(日) 04:10:46.96ID:xQGdFtWrM341デフォルトの名無しさん (ワッチョイ bf02-vAXu)
2019/05/26(日) 15:23:19.13ID:/taseRUt0 以下の状態だとB1〜B3は全て1:1048576と表示されてしまいます
Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1〜B3は全てA1と表示されます
Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか?
A B
1 Sheet1 =fn(A1)
2 Sheet2 =fn(A2)
3 Sheet3 =fn(A3)
Public Function fn(sSheetName As String) As String
fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
End Function
Cells.SpecialCellsをRange("A1").SpecialCellsに変更した場合はB1〜B3は全てA1と表示されます
Ctrl + Endで選択されるセルの番地を文字列として取得するにはどうすればいいですか?
A B
1 Sheet1 =fn(A1)
2 Sheet2 =fn(A2)
3 Sheet3 =fn(A3)
Public Function fn(sSheetName As String) As String
fn = ActiveWorkbook.Worksheets(sSheetName).Cells.SpecialCells(xlCellTypeLastCell).Address(False, False)
End Function
342デフォルトの名無しさん (ワッチョイ bf02-vAXu)
2019/05/26(日) 15:41:58.63ID:/taseRUt0 関数呼び出しではなくマクロやボタンクリックでなら問題なかったので
そっちの方法に切り替えますすみません
そっちの方法に切り替えますすみません
343デフォルトの名無しさん (ササクッテロ Sp5b-hkBF)
2019/05/27(月) 06:52:50.90ID:lha2yOvQp 入力項目を複数用意したinputboxって作れますか?
344デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/27(月) 07:55:59.33ID:6csejWaN0 >>343
どんなものを考えているんだ
どんなものを考えているんだ
345デフォルトの名無しさん (ササクッテロ Sp5b-hkBF)
2019/05/27(月) 08:12:50.88ID:lha2yOvQp >>343
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
ごめん入力フォームじゃなくていいかも
最終的にやりたいことは、以下のボタン等が設置されたユーザーフォームを作ることです(他の要素も考えたら普通にinput boxでは無理と気づきました)
・AUTO openで開く
・押すと特定セルに文字が入力されるボタンを複数設置する
・カレンダーを設置する
・押すと印刷処理を行いつつファイルを上書き保存し閉じるボタンを設置する
346デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/27(月) 08:30:52.72ID:jh6nOFVKM347デフォルトの名無しさん (アメ MMcb-bNEy)
2019/05/27(月) 08:37:02.21ID:jh6nOFVKM Excelの勉強不足だろ
348デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/27(月) 08:47:00.50ID:6csejWaN0349デフォルトの名無しさん (ワッチョイ 07f9-IeET)
2019/05/27(月) 09:45:56.73ID:W0zr6KdF0 この程度の理解力だとカレンダーが必要かもわからない
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが
カレンダーなんか別にシートでもできるけど、どこまで使うかがわからないから
最適な解もわからない
入力をシートに反映するなんて普通にセルを参照すればいいだけ
ExcelもVBAも1%以下の理解で動作仕様を描くのではなく結果で何をしたいかを描くべき
これでも少しおだててるが
350デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/27(月) 10:37:56.08ID:6csejWaN0 おだてるの意味間違えてるよ。
351デフォルトの名無しさん (ワッチョイ 07f9-IeET)
2019/05/27(月) 10:41:41.92ID:W0zr6KdF0352デフォルトの名無しさん (ワッチョイ df01-Fpyl)
2019/05/27(月) 11:25:38.71ID:bVlhmZqp0353デフォルトの名無しさん (ブーイモ MMcb-xIO9)
2019/05/27(月) 11:44:36.09ID:dknccbkiM354デフォルトの名無しさん (ワッチョイ bf68-dCWx)
2019/05/27(月) 13:50:33.03ID:6csejWaN0 >>352
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
どういうパターンであれ、大体ロクでも無い物だという判定ぐらいなら可能
355デフォルトの名無しさん (ワッチョイ 8791-cMWe)
2019/05/27(月) 14:00:43.29ID:zUYqf9yC0 >>345
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
ここの人達はマウント取りたいだけで実際はあまりスキルが無い人が大半なので程々に聞いていた方が良い。
あなたの要望については疑問が1つ、可能だけどあなたのスキルから考えて技術的に難しい点が1つある。
疑問は、AutoOpenで開いて、閉じるボタンで保存終了するのならExcelで作る必要は無いのでは?という疑問。
普通にC#辺りで作った方が適してると思う。この後に述べるけど、カレンダーの件もC#等の方が簡単。
技術的に難しいのはカレンダーの実現。
サブクラスとWin32の知識が無いと難しい。
後々を考えると汎用的にクラス作った方が良いからそういう技術も必要。
もっとも、ファイル追加とか自作するとかで良ければスキルが無くても出来るともいえる。
356デフォルトの名無しさん (ブーイモ MMcb-xIO9)
2019/05/27(月) 14:36:42.16ID:dknccbkiM >>355
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
この人はマウント取りたいだけで実際はあまりスキルが無い人なので程々に聞いていた方が良い。
357デフォルトの名無しさん (スプッッ Sd7f-cMWe)
2019/05/27(月) 14:38:46.48ID:YnNlAtYud >>356
そうくると思ったw
そうくると思ったw
■ このスレッドは過去ログ倉庫に格納されています
