Excel VBA 質問スレ Part78

■ このスレッドは過去ログ倉庫に格納されています
2022/10/30(日) 13:43:16.31ID:6yf2E1Gz0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
Excel VBA 質問スレ Part77
https://mevius.5ch.net/test/read.cgi/tech/1658009255/

-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/12/24(土) 13:34:40.02ID:xbH5VpiM0
>>524
> "=SUBTOTAL(103,A4:A300)" & "&""/""&" & "COUNTA(A4:A300)"
"=SUBTOTAL(103, A4:A300) & ""/"" & COUNTA(A4:A300)"
じゃだめなの?
526デフォルトの名無しさん (ワッチョイ 6bc7-90ZU)
垢版 |
2022/12/24(土) 13:48:48.91ID:4SoiJAnm0
>>525
それでもいい
2022/12/26(月) 17:51:15.49ID:45VxsXpS0
にんげんだもの
2022/12/26(月) 20:52:11.13ID:04vSlPMR0
正月はVBA三昧!
コード書きまくるぞ~
2022/12/27(火) 10:24:03.69ID:RFEZE8mMa
休みでもVBA書くのか、凄いな

家だとVBAのネタがないからいまいちやる気にならない
2022/12/27(火) 12:52:26.69ID:lugHnWiN0
え?みんな休日はExcelやらないの?
自分は隙あれば何かしらの練習してる。
勘と腕が鈍りそうな気がして。。。
531デフォルトの名無しさん (JP 0H6b-s0Sd)
垢版 |
2022/12/27(火) 12:56:35.30ID:4LpiodjLH
このスレに質問が来ればいくらでも回答するよ
2022/12/27(火) 14:46:03.57ID:r8IxISV7a
家だとVBAで作りたいネタが思い浮かばない、、

何を題材にして練習しているのか教えてくれると嬉しいな
2022/12/27(火) 14:52:53.05ID:ITKU+yxr0
>>515
VBAを教えるのに必要なのは、講義の時間ではなく、「自分でも業務改善プログラムを作れた!」っていう成功体験だと思う。
処理速度云々は、相当後のほうでいいと思う。

ここで、資質があるやつと、そうでないやつがわかる。
資質のあるやつは、自分の作ったプログラムをさらに改善しようと、いじる。
このいじる作業をしているやつだけを見つけて、さらに教える。
改良作業をやってるやつは、理屈を理解し始めているから、いじれる。
そして、そのうちマニュアルやサイトでの調べ方と適用方法を理解して、自然と、命令数が増えてくる。

改良を試みてないやつは、たぶんプログラム自体、どっかから丸々コピペしてきて、それで運よく目的を達成できてるだけだから、動作原理わかってない。
ゆえに、次の問題を与えても、成長していないから組めない。
534デフォルトの名無しさん (JP 0H6b-s0Sd)
垢版 |
2022/12/27(火) 15:30:01.29ID:4LpiodjLH
>>532
このスレをずーっと過去に遡って、面白そうな奴を片っ端から解いていくだけでいいんじゃないか?
俺は毎日やってるから出来ないけど

あと、vbaよりもスプレッドシートのGASのほうが色々出来て面白いよ
2022/12/27(火) 15:56:24.02ID:lnirqxnTd
雑談みたいな書き込みは自重すればいいのに・・・
2022/12/27(火) 18:13:52.44ID:lugHnWiN0
いやならスレを開かなければ良い
2022/12/27(火) 23:00:25.77ID:lvm99r8j0
いやなら5chやめればいいのに
2022/12/28(水) 01:04:02.08ID:vaYWjZbJ0
いやならヅラを被れば良いのにな
2022/12/28(水) 20:47:21.58ID:sL7xQ5iP0
いわなら砕けばいいのにな
540デフォルトの名無しさん (ワッチョイ 5319-GrCd)
垢版 |
2022/12/28(水) 23:15:21.21ID:5cqOgtBW0
いや奈良公園にせんべい持ってくと鹿に襲われるけどな
2022/12/28(水) 23:31:04.44ID:iylgISulM
人間用のせんべい持って行くなよ
2022/12/29(木) 06:52:02.69ID:AIOxbE0/0
マジレスすると、2ちゃんねる時代からスレタイから脱線した内容になるのは普通だから。
それが気にくわないなら開かなきゃ良いだけ。
2022/12/29(木) 18:32:00.23ID:tmwuu1S/p
軌道修正レスも普通だから。
いやなら開かなければいいだけ。
544デフォルトの名無しさん (ワッチョイ 5b66-s0Sd)
垢版 |
2022/12/30(金) 09:09:52.34ID:WIIszMQ70
Excell2019 win10という環境で標準のVBEを使用しています。
ローカルインドウやウォッチウインドウにて多次元配列の中身を確認しながらデバッグを
している時に、一個ずつ+マークを押して展開するのが不便に思っています。

一行ずつ動かしながら逐次中身の変化を追いかけたいので、ずっと展開しっぱなしにしたいです。

ボタン一発で配列全部展開してくれるとか、展開しっぱなしにするとか何か良い方法はないでしょうか?
545デフォルトの名無しさん (ブーイモ MMb9-k9wW)
垢版 |
2022/12/30(金) 10:22:12.46ID:xFabiT9dM
無い。
配列の内容をワークシートに展開する関数を作って、
イミィディエトウインドウから 関数(配列) と実行。
546デフォルトの名無しさん (JP 0H6b-s0Sd)
垢版 |
2022/12/30(金) 11:00:35.06ID:zE3ePWnpH
最初から個別の値をウォッチ式に入れておくとか
a(0)
a(1)
547544 (ワッチョイ 5b66-s0Sd)
垢版 |
2022/12/30(金) 11:34:25.20ID:WIIszMQ70
>>545>>546
ありがとうございました。
個別でウォッチ追加します。
2022/12/30(金) 12:00:12.33ID:MT1c2vte0
いえいえ
2022/12/30(金) 15:58:51.64ID:IwLtnZMZ0
複数のExcelファイルで作業をしていると、ふと見るとVBEの左側のツリーに立ち上げたファイル名がずらずら並んでいることがあります
普通はそのファイルを閉じればツリーから消えるのですが、たまに消えずに延々と溜まりまくるときがあります
こうなるとメモリ消費しまくって最終的にはメモリ不足で動かなくなります

こうなってしまうのはどんな理由が考えられるのでしょうか
それとも、Excelは定期的に全部閉じる癖をつけておくべきなんでしょうか
550デフォルトの名無しさん (JP 0H6b-s0Sd)
垢版 |
2022/12/30(金) 17:13:53.47ID:zE3ePWnpH
>>549
Excelがファイル閉じるのを失敗している
その場合、一度失敗するとそれ以降全部失敗する

再インストールか、メモリの増設した方がいいと思う
あとLAN上にあるExcelファイルを開くとそれになりやすい
2022/12/30(金) 17:26:59.66ID:esJPCknOd
>>549
マクロで開いてるならマクロがおかしいから
private変数でブックを保持する様にしているならそれが解放されてないと起きるかと
2022/12/30(金) 17:56:14.08ID:IwLtnZMZ0
>>550-551
ありがとうございます
他ファイル参照するために開いて閉じるようなマクロは結構多用してます
基本的には単純に開いてはデータ引っ張って保存せず閉じるというような内容ですが…

参照するファイルはLAN上ではありませんが、OneDriveの共有フォルダには置いてあります(ローカル保存)
一度この辺のマクロを見直してみたいと思います
原因がわからなければ再インストールしてみます
2022/12/30(金) 19:08:24.88ID:k0Mu53Mo0
>>549-552
ウチもマクロで他の個別ブックを開いて
その中のマクロを実行して上書き保存・当該ブックを閉じる
をやってたけど、VBEの左側ツリーに閉じたはずのブックがズラズラ・・・

開くブックが70個ちょっと、中のクエリーをテーブルとして変数に設定するところで
いつもコケるようになった。
ブックの保存先はいずれもローカル。

操作するブックと操作される個別ブックの変数、プロシージャ名は
重複しないようにしていたがダメ。
次のブックを開くインターバルを1秒~とか、
クエリーはテーブルオブジェクト変数に入れているので、
毎回Nothingを入れてみたがダメ。

結局、地域毎に開くブックを50個くらいに収まるように
操作するブックを分けた。

ブックを割り当てる変数と、
それを保存・閉じる記述を見直してみようと思う。
554デフォルトの名無しさん (JP 0H6b-s0Sd)
垢版 |
2022/12/30(金) 20:11:23.30ID:zE3ePWnpH
>>552
onedriveか、あれもLANと同様になんか変な挙動になっている
僕はあまりの挙動不安定さにスプレッドシートに逃げたよ

閉じる動作・共有に関して、もっと突き詰めたほうがいいかもしれない

カンだけど僕がやるなら以下のような形です。解決するかどうかは不定。

・開いたExcelを、一回activebookにしてから閉じる
・適度に、OSに処理を返す。forを使っている+時間が掛かっている場合、適当にDoEvents()を挟んでみると改善する可能性があります
・onedriveの挙動が予測できないので、一旦ダウンロードフォルダなどにコピーしてから使ってみる。
 どうも共有フォルダはタイムラグがあるのか、意図しない非同期になってしまい良くないことが起こっている気がする。

非常に問題を捉えづらい、難しい問題と思います。頑張ってください
2022/12/30(金) 20:26:56.53ID:esJPCknOd
>>553
WorkbookやWorksheet含めてObjectは順序だててNothingするようにしたらそんなこと起きないとおもうよ
set oWB = xxx
set oWS = oWB.xxx
なら
set oWS = nothing
set oWB = nothing
という順ね
面倒でもNothingで解放するクセつけたほうがいいと思うぞ
556デフォルトの名無しさん (ワッチョイ 1a90-5nMs)
垢版 |
2022/12/31(土) 09:58:21.76ID:doxP0Tnc0
マクロの管理・閲覧ってみなさんはどうしてるんでしょうか?

基本的にはブックの中に保存してるとは思うんですが
ブック開かないと中身確認できないですよね?
何らかのファイルに中身を保存して、たとえばvscodeなどのエディタで開いたりするのでしょうか?
2022/12/31(土) 10:37:26.00ID:YncayN1e0
俺は普通にブックをSVNでバージョン管理してる
差分を見たい時は見たいバージョンを保存して最新版と保存したバージョンから各々エクスポートして差分を取ってる
VsCode の拡張もあるみたいよ ⇒ >>462
2022/12/31(土) 11:33:27.48ID:h8iAJsoLd
>>556
ブックのマクロを別ファイルに保存するということはコードの2元管理になるからしない
普通にブック開いてVBEでみるだけでそれで困ったことはない
別のブックのコードを参照したい場合は一時的にそのコードをコピペしてエディタで見ることはあるけど終わったら削除してる
何度も手直しするような事もないからバージョン管理もしてない
559デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2022/12/31(土) 12:12:05.76ID:60VcS97wH
>>556
特にしてない

昔はよく使う「最終行の取得」や、「set〜」なんかをまとめたブックを作ってそれをコピペしていたけど、
コピペしないほうが早い事に気づいてからはそういうのもなくなった
高速化もよほどじゃない限りしなくなったな。
2022/12/31(土) 14:12:00.31ID:QIMjPb7U0
vbaでファイルを開くダイアログを出させて、ユーザーに任意のシートを指定させ、
VBA側でそのシートオブジェクトを取得して、解析をするというものを作ろうとしています。
よろしくお願いします。

ttps://oshiete.goo.ne.jp/qa/3042408.html
こちらに「シートを選択させてアクティブにする」というコードがあります。
ttps://www.kurumico.com/excel-vba-file/315/
こちらには「ファイルをダイアログから選択指定して開く」というコードがあります。

単純に組み合わせたら願望はかないました。

そこで質問したいのは
MyDialog.Controls.Add(ID:=957).Execute
これが一体何なのかということです。
エクセル2019の左下にあるシート一覧を左右に移動する
← →
このマークのところで右クリックをすると同じようなシート選択ダイアログが出てきます。
そして選ぶと、アクティブになります。

957を一覧から探してもこういう説明を見つけられないでいます
そういう理由からCommandsBarsもControls.addもイマイチ理解を深める事が出来ずにいます。
どこかいい説明サイトがありますでしょうか?
561デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2022/12/31(土) 15:46:44.58ID:60VcS97wH
>>560
無かった
一応コードの意味から
'新規コマンドバーを一時的に追加する
Set foo = CommandBars.Add(Temporary:=True)
'上記にコマンドID957を追加し、実行する。2はスペルチェック。多分1はダミーコードでなにも起こらないはず。
foo.Controls.Add(ID:=957).Execute

で、この957って何って質問なんだろうけど、これはシート選択ダイアログのIDと思われる。
普通は定数名で設定し、マジックナンバーは使わない。
foo.Controls.Add(xlSheetList).Execute 'のような形になるはず
定数名とIDの対応表がどこかにあるはずなんだけど、全然見つからない。もしかすると無いのかもしれない。

使い方は公式を見るのが早い
https://learn.microsoft.com/ja-jp/office/vba/api/office.commandbarcontrol
https://learn.microsoft.com/en-us/office/vba/api/office.commandbarcontrol.id
一覧はこれだと思うけど、そこにも載ってない
https://www.microsoft.com/en-us/download/details.aspx?id=50745

ただこのコマンドリストを一時的に利用するというテクニックは、これ以外に使い道は無いと思うから
そんなに深く考えなくてもいいと思うよ
2022/12/31(土) 16:01:13.15ID:jV5H7FOV0
俺もID=957が何なのか探したけど見つからんな
昔のExcelでもちゃんとシート選択ダイアログは出てくるからVBAが付いてるOfficeならバージョンによって動かないみたいな事は起きないと思われるが
これが気持ち悪い場合は適当な選択フォームを作った方が良いだろうね
2022/12/31(土) 18:56:24.99ID:QIMjPb7U0
>>561>>562
調べていただきましてありがとうございました。
これで質問を解決とさせていただきます。
深く考えない事にしますが、これを初めて見つけた人はどうやって見つけたのでしょう…
564デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2022/12/31(土) 19:13:19.72ID:60VcS97wH
>>563
昔はそういう一覧が合ったんだと思う
で、マイクロソフトが更新忘れて、忘却していると思う
(別に作る義務はないんだけど)
マイクロソフトに言えば、作ってくれるかもね
2022/12/31(土) 20:36:02.66ID:2V6bSqaW0
>>563
debug.Print CommandBars.Add(Temporary:=True).Controls.Add(ID:=957).Caption
「シート一覧(&S)」
これで存在を確認できるね

for-nextで総当たりして見つけたんだろうね
リボン以前の時代に
2022/12/31(土) 22:52:34.11ID:J15SQ39W0
マイクロソフトのサポートに聞けば有償で教えてくれるだろ
567デフォルトの名無しさん (ワッチョイ a302-9j0N)
垢版 |
2023/01/01(日) 02:02:13.06ID:WHfKVncD0
素人質問で申し訳ありません。

G行(列?)にワンクリックで時刻を出るように

Private Sub CommandButton1_Click()
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub
Target.Value = Date
Cancel = True
End Sub
とvisualbasicで入力しました。

でワンクリックで「時間:分:秒」は出るようになりましたが、全部「0:00:00」
になってしまいます。今の「時間:分:秒」が出るにはどうしたらよいでしょうか。
ちなみにセルの書式設定で「時刻」⇒「13:30:30」の設定にしてあります。
よろしくお願いいたします。
2023/01/01(日) 02:13:01.01ID:U+Y4eA/v0
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("G2:G30000")) Is Nothing Then Exit Sub
Target.Value = Now
Cancel = True
End Sub
569567 (ワッチョイ a302-qF/f)
垢版 |
2023/01/01(日) 02:19:43.81ID:WHfKVncD0
>>568
ID違うかもですが早急なご回答感謝です。
下から3行目のDateをNowに変更いたします。
ID:U+Y4eA/v0様とご家族の今年一年の
健康をお祈り申し上げます。
2023/01/01(日) 09:02:52.64ID:QhZkuHz30
凄く初歩的な事かもしれませんが、自力でわからなかったので教えてください。
コマンドボタンが3つあって、そのうち1つがエラーで止まるとします。
エラーで止まるボタンをA
正常なコードになっているBとCみたいな

Aを押してエラーが出たらVBE画面が開いてしまいます。
そしてVBE側のリセットボタンを押さないと処理がリセットされません。
これを気にした事はありませんでした。

しかしこれから他人に使わせたいので
【1】エラーが出ても一時停止ではなくて初めから完全停止になって欲しい。
【2】エラーが出てもVBE画面が開いて欲しくない

こういうのはどうすれば良いのでしょうか?
2023/01/01(日) 09:28:20.79ID:l9m14P5Y0
>>570
【2】はOn Error Go To を使ってエラーが出たら処理を辞める方法がある
もしくはエラーが出る特定のところのみOn Error Resume Nextを使ってエラーを無視して、その時にErrオブジェクトが値を持つかを見て値を持ってたら処理をやめるとか
【1】は無理
というかエラーが出ることが分かるならエラーが出ないように直すべき
個人で使うのならいいけど、他人に使わせるのにエラーが出たままは相当マズい
572デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2023/01/01(日) 09:31:32.39ID:N3XMs5RAH
>>570
エラートラップはかなりしっかりやっといたほうが良いけど・・・
対処法として、gotoとresume nextがある
gotoはちゃんとした分岐
resume nextはエラー完全無視でそのまま実行し続ける。
後者は超危険だけど、自作ゲームぐらいならこれで済ませてもいいと思う

Sub foo()
On Error GoTo err
foo2 = 0 / 0 '0で割り算

MsgBox "エラーはありませんでした。通常終了です"
Exit Sub '正常終了

err:
MsgBox "エラーが起きたので終了します"
End Sub

Sub bar()
On Error Resume Next
bar2 = 0 / 0

'通知
If err.Number > 0 Then
MsgBox "エラーが起きたようですがそのまま実行しました"
End If

End Sub
2023/01/01(日) 13:29:35.26ID:QhZkuHz30
>>571>>572
無理でしたか…
「エラーが出たら一旦エクセルを再起動してもらって、私がコードを直すまではそのボタン触らないで」
っていう事にしようかと思います。

>というかエラーが出ることが分かるならエラーが出ないように直すべき
ハっとしました。
On Error Go To処理はエラーが出るの前提みたいで使うのいやだなと思ってましたが、
エラーを前提にしてたのはよっぽど自分の方でした。

解決です。ありがとうございました。
574デフォルトの名無しさん (ワントンキン MM8a-HRUe)
垢版 |
2023/01/01(日) 20:36:34.67ID:QH48KlFOM
新年早々馬鹿か
こんなのが作ったものを使わされる人達可哀想
2023/01/01(日) 21:09:46.92ID:ZzHbs0In0
>>574
おまえのほうがバカだよ
576デフォルトの名無しさん (スッップ Sdba-QCOi)
垢版 |
2023/01/01(日) 21:18:44.46ID:gVENJcWpd
>エラーが出たら一旦エクセルを再起動してもらって

いや、馬鹿だろこいつ
2023/01/01(日) 21:33:46.27ID:uPXSUIhV0
他人に使わせる品質でないことは確かだな
2023/01/01(日) 22:55:58.30ID:SDgcSZSgr
>>573
「エラーが出たら一旦エクセルを再起動してもらって、私がコードを直すまではそのボタン触らないで」
これはいいけどさ、そもそもエラーが出るって分かってるものを使わせるのはヤバいだろ
エラーを出さないようにしてから使わせるか運用制限を書いとくかするのは必須だろ
それでもエラーが出た場合はそう言うのであって、最初からエラーありきはどう考えてもおかしい
579デフォルトの名無しさん (スッップ Sdba-QCOi)
垢版 |
2023/01/01(日) 23:30:29.85ID:gVENJcWpd
>>578
よくないだろ
どんなエラーかどういうデータでエラーになってるかをエクセルを終了して全部消して連絡くださいと書いてるわけだ
馬鹿過ぎて片腹痛い
2023/01/02(月) 00:23:35.65ID:WJKKDxmM0
>>579
そうだな
エラーが出た時点で連絡するべきだ
ただ「馬鹿過ぎて片腹痛い」これは言うべきか?
こういうことを言ったら萎縮してスレに書き込む人が減るだけ
メリットがなにもないどころかデメリットしかないことを言う意味はない
581デフォルトの名無しさん (ワッチョイ 9a4b-o0Tc)
垢版 |
2023/01/02(月) 00:43:21.31ID:qD3952vu0
エラー地雷が必ずあるボタンとか怖すぎる
マクロの結果は元に戻せないから、コードの先頭に関係するブックをセーブするように書くことをお勧めする
582デフォルトの名無しさん (ワンミングク MM8a-HRUe)
垢版 |
2023/01/02(月) 00:49:52.66ID:4s2WSfqGM
>>580
内容も吟味せずに脊髄反射で書き込んで馬鹿を擁護するお前のような奴が馬鹿を蔓延らせることに気付くべき
583デフォルトの名無しさん (スッップ Sdba-QCOi)
垢版 |
2023/01/02(月) 02:07:30.17ID:u1h4+miEd
>>580
>>560 にも答えられない馬鹿に言われてもな
2023/01/02(月) 09:35:04.20ID:WJKKDxmM0
>>582
お前の書き込み内容、有益な情報が一つもないじゃん
「内容も吟味せずに脊髄反射で書き込んで馬鹿」ってお前の事?
2023/01/02(月) 11:24:49.11ID:5oIC6wjS0
なんだかすみません。
今回は主にファイルオープン関連で「絶対にエラーが出ない全てに対応したコード」というのが
書く自信がありませんでした。勉強不足です。

今も一つわからないのですが、例えばマクロと同じフォルダにあるBookAを開いてる状態で、
BookAファイルをさらにオープンしようとするとwin10office2019の当方環境においてエラーが出ないのですが、
これは基本的に他のパソコンでもエラーが出ないのでしょうか?
winxp以降office2000以降あたりであれば大丈夫なものなのでしょうか?

別フォルダにある同名ブックを開こうとするとエラーになります。
こちらは開く前にファイル名で既に開いてるブックを確認するコードを追加しようとみたいなサイトが
いくつも見つかるので解決したのですが、既に開いてるファイル自身を開く事が成功してしまう
ケースを通常と思ってエラーの出ないコードと考えてよろしいのでしょうか?
2023/01/02(月) 11:57:58.32ID:C7IOio2r0
初心者が思い込みで作ると失敗する
開発環境と実行環境がバージョンやパッチも含めて違うなら同じ環境で動作の確認をするしかない
作ったら終わりではなく、条件を変えても正しく動作するかを確認するくらいやれよ
長いファイル名とか共有フォルダとか、サイズ0に壊したファイルとか作って試すなど
2023/01/02(月) 13:14:15.32ID:cWlG9T3F0
当たり前だけどファイル操作はVBAの知識以外にOSの知識もある程度必要になるから聞かなきゃ判断できないような処理ならやらないが吉かと。
開くのは諦めてせいぜいファイルの存在確認程度にとどめておけば?
2023/01/02(月) 13:45:13.52ID:N69RPsxQd
>>585
自分はWin10+Ofiice365だけど
開いているファイルと同じフォルダのファイルを開こうとすると開いているファイルがアクティブになって
別フォルダの同名ファイルであれば同じ名前のファイルは開けないってエラーになるから
古いバージョンでも一緒なんじゃないかと思うけど
回避したいならWorkBooksの内容をチェックして同じファイル名があればメッセージを出して処理を止めるなりすればいいんだと思うけどね

古いバージョンでもチェックしたいなら単純にフォルダA、フォルダBに同じファイルをいれて両方開けるか試してもらうだけでいいと思うぞ
2023/01/02(月) 14:06:13.66ID:v+YqJ02u0
多分だけど、手動で同一ファイルをダブルクリックで開くような操作では無く
開いたファイルを元に「新しいウィンドウを開く」のようなコードを書いてると思う
いろいろとオリジナルというか無手勝流というか、な制作してるようだし、個人利用に留めとけ と忠告しておきたい
ま、他人からコテンパンに罵られて伸びるタイプも居ない訳でも無いから、ご自由になんだけど(例えばMS社 毎月バグって世界中から罵られても知らん顔してアプデを続けるし)
2023/01/02(月) 21:56:15.06ID:5oIC6wjS0
ありがとうございました。
完璧なコードって、人間の行動を全て読むレベルのとんでもない高度な行為ですよね…
プログラムに携わりたいなら甘えずに向き合うべき課題なんだと思います。
年末年始みたいな時くらいしか勉強出来ないの悔しいですね。
591デフォルトの名無しさん (ワッチョイ 9a4b-o0Tc)
垢版 |
2023/01/02(月) 22:55:02.83ID:qD3952vu0
上の方でエラーが出たら自分でコードを修正するって書いているから解決方法は知っているんだろ?
なら、Do loopとOn Error Go Toを使ってエラーが解決するまで、知っている限りの解決コードを全て書けばいいと思うが
592デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2023/01/03(火) 00:15:50.12ID:QpUipTPJH
>>590
全てって言っても場合によるよ
入力内容のチェックなら数値文字列エラー値ぐらいでほぼ網羅できるけど、
ファイルを開いたりアクティブになったりってなるとExcelやOSとの兼ね合いも出てくるからほんとキツイ
通常操作の9割をカバーできればいいと思う

あとは起きたエラーに都度対応していくしかない
2023/01/03(火) 00:27:15.59ID:mykrlOkz0
>>591
ファイルロックとかは可愛いもんでウイルスに実行ファイルを書き換えられたとか、アクセス中に停電とか、HDD不安定とかもしもを考えだすと切りがない
2023/01/03(火) 01:34:33.44ID:JZU75e4ya
VSCode では、同名のファイルでも、パスが異なると開ける。
a/a.txt, b/a.txt みたいに判別できる

そもそも、そういう事を想定していないアプリがおかしい。
アプリを作る際に、これぐらい誰でも分かる
2023/01/03(火) 01:35:01.24ID:JZU75e4ya
VSCode では、同名のファイルでも、パスが異なると開ける。
a/a.txt, b/a.txt みたいに判別できる

そもそも、そういう事を想定していないアプリがおかしい。
アプリを作る際に、これぐらい誰でも分かる
596デフォルトの名無しさん (ワッチョイ fa74-s9wq)
垢版 |
2023/01/03(火) 01:52:28.54ID:r5MucSoo0
アルツハイマーでもこれくらい分かる
2023/01/03(火) 06:33:04.83ID:t9t/KRTz0
最初にon error resume nextを書いとけばランタイムエラーを出さずに原因不明の謎の挙動だけで済む
もし時間に余裕があれば目星を付けた処理の直後でif err<>0 thenでエラーになってないかチェックする
エラーの検出後はon error goto 0でエラーをクリアして再度on error resume nextを仕掛ける
これぐらいいい加減でもVBAの場合は許されるから覚えておくといい
2023/01/03(火) 06:33:48.96ID:cXTWG1PB0
>>593
でた、極論で語る奴w
お前は毎回そこまで考えてコード書いてるのかよ
2023/01/03(火) 06:35:37.55ID:cXTWG1PB0
>>594
むしろダメなのはメジャーなソフトではExcelぐらいだと思うぞ...
2023/01/03(火) 12:03:30.64ID:fDnSRX1A0
読み込みに失敗、書き込みに失敗程度の動作確認は初心者でなければやると思ってる
あとはエラーコード吐いて、異常がでた場合○○を確認してくださいとかで対応
フリーズしない、ファイルを壊さない、間違った表示をしないように作るのは最低でもやってほしいもんだ
俺ならそうするがみんなは違うのかな?
2023/01/03(火) 12:39:40.67ID:a1UWVOIma
まあテストをどこまでやるかは状況次第だけどファイル関係をエラートラップしてリトライなりエラー表示をするのは普通だと思う
書捨てとか自分しか使わないならエラートラップを端折ってあえてVBAのエラーで止めるとかはある
個人的にないのは>>597みたいなエラーの握りつぶし
2023/01/03(火) 13:00:34.65ID:NsWNvAiQa
まともな開発だとエラー握り潰しは絶対ダメだけどVBAだからなあ
必ずエラーが出るゴミみたいなマクロは珍しくないから、いっそ握り潰してくれた方がマシだと思うことはある
2023/01/03(火) 13:33:35.71ID:mykrlOkz0
>>598
アホが食いつかんかなと思って恣意的に書たんたがこれほどとはw
こどおじには解らんだろうが絶対落ちてはいけないシステムならそのくらいの対策は普通にされてるぞ
2023/01/03(火) 13:40:10.21ID:cXTWG1PB0
>>602
VBA だから握りつぶしても良いと言うのはよくわからん
まあモダンな言語に比べてエラー処理がやりにくいと言うのはあるけど
2023/01/03(火) 13:49:00.13ID:cXTWG1PB0
>>603
VBA で書く絶対落ちてはいけないシステム!
本でも出せば?w
2023/01/03(火) 14:02:20.98ID:mykrlOkz0
>>605
おいおい俺はVBAとは言ってないぞ
お前が勝手に吹いてるだけなんだが自覚できんのか
2023/01/03(火) 14:07:51.30ID:mykrlOkz0
VBAでは絶対に落ちてはいけないシステムとかいう発想自体がシロウト臭丸出しでハズいな
2023/01/03(火) 14:09:48.88ID:mykrlOkz0
正月からこんなとこでイキってる程度だから仕方ないか w
2023/01/03(火) 14:34:55.58ID:jJKJi0M8a
>>606-608
スレタイ100回読んで来年までROMっとけ
2023/01/03(火) 15:58:29.44ID:zc6LNDpCd
>>593なんてハードウェアやその周りのソフトの対策であって開発するアプリケーションで考慮する話ではないと俺も思ってるけどな
まあ戻れないところまで追いつめられて必死なんだろうけどそろそろ落ち着いたらどうかね
2023/01/04(水) 05:43:45.27ID:kI1B+abx0
やりたいことあって今日人生で初めてプログラミングに触れたんですけど、ぜんぜんわかりません
idが_rって書いてあるから_rって書いてんのになんでこれでエラー吐くんでしょうか
助けてください
https://i.imgur.com/xYbWeZX.jpg
https://i.imgur.com/KMcczJ7.jpg
2023/01/04(水) 09:18:44.49ID:9L/11j8r0
まずインデント揃える所から覚えようか
613デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2023/01/04(水) 09:44:30.63ID:fU7igCvDH
>>611
Seleniumでスクレイピングしようとしてるのは分かるけど、
その部分だけコード見せられても分からない
全部見せて
2023/01/04(水) 09:54:05.40ID:lFNs7lW+0
てかエラーの内容も書かない奴の相手すんなよ...
2023/01/04(水) 10:34:18.99ID:2ktLmHHjd
これって前澤じゃんけんで金もらえるから自動化したいとかそういう事考えてるんじゃね?
2023/01/04(水) 11:05:45.68ID:lFNs7lW+0
モチベーションの起点はなんでもいいだろ
俺だってエロ画像見たいからperl覚えた口だし
617デフォルトの名無しさん (JP 0He6-9yt5)
垢版 |
2023/01/04(水) 11:22:52.20ID:fU7igCvDH
>>615
まさにそれだね
招待すると挑戦回数が増える
謎アプリをインストールすると100円ぐらいもらえる
という仕組みらしい

プログラムを覚える同期としてはとても良いと思うが、
登録とか色々必要だからめんどくさくて検証できないな
2023/01/04(水) 11:28:33.03ID:2ktLmHHjd
>>616
おれは教えないだけだから別にかまわんよ
そもそも今さらそんなこと聞いてる奴だから他でも聞いてるかもしれんし作れるとも思えないしな
2023/01/04(水) 11:33:57.55ID:lFNs7lW+0
教えないなら黙ってりゃいいのに...
2023/01/04(水) 17:52:13.99ID:YWyY+Uw80
おまえもな
2023/01/04(水) 19:22:28.05ID:Hj1uvutd0
教えないぞー!
俺は教えないぞー!!
2023/01/04(水) 20:38:59.74ID:SsOt/AigF
それよりもグー、チョキ、パーがr、s、pになる理由を誰か説明してくれ
2023/01/04(水) 20:45:41.73ID:FttywtqZ0
英語版の頭文字
624デフォルトの名無しさん
垢版 |
2023/01/04(水) 23:17:45.40ID:J/WGQ1Ed0
自己解決しましたありがとうございます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況