Excel VBA 質問スレ Part79

■ このスレッドは過去ログ倉庫に格納されています
2023/01/28(土) 11:46:47.21ID:mBQ16TA8
↑同じ内容を3行貼り付けること

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

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

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

-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/04/29(土) 05:48:46.87ID:CXMs2SVp
>>635
どゆことかよくわからんけどイベントプロシージャのことかな?
2023/04/29(土) 06:57:41.72ID:+IUP3Yu9
そうです
ワークシート以下の単位はないから貼れないんですかね多分
2023/04/29(土) 07:07:50.60ID:CXMs2SVp
>>637
いやどゆことかよくわからんけど、例えばchangeイベントなら変更されたセルのrangeを取得できるからそこにコードを仕込むことはできるけど。。。そゆことじゃなくて?
639デフォルトの名無しさん
垢版 |
2023/04/29(土) 16:14:48.16ID:eiNFh+Wm
ファイルのパス、フォルダのパスをDimではなくConstで書く方がより正確性が増す
より確実に動作をする
という事はあるのでしょうか?
2023/04/29(土) 16:25:03.32ID:vp07q8LL
Constで正確性?確実?
エスパーすると関数型風に書きたいってことかな?
VBAでは無理だからそういう考えは捨てた方がいい
2023/04/29(土) 16:25:12.56ID:WvPbxn9Z
ない
642デフォルトの名無しさん
垢版 |
2023/04/29(土) 17:18:17.07ID:eiNFh+Wm
休みの日も一生懸命考えていましたがきっと私にそれを求められていないし、提案や進言をしても却下されるからもういいや
2023/04/29(土) 17:37:46.68ID:vp07q8LL
VBAは制限多すぎるから何か自分なりの考えを実践したいなら別の言語も検討したらいいぞ
2023/04/29(土) 17:57:33.75ID:6pUnwcoa
俺のエスパーだと、うっかり内容を書き換えてしまう事故が防げるって意味で言ってる?
645デフォルトの名無しさん
垢版 |
2023/04/29(土) 18:09:49.02ID:kR657gEs
>>639
馬鹿の考え休むに似たり
646デフォルトの名無しさん
垢版 |
2023/04/29(土) 18:32:46.88ID:eiNFh+Wm
>>645
もういいですどうでも
みたいな感じです投げやりになろうかな
2023/04/29(土) 19:09:19.53ID:vp07q8LL
うーん一生懸命とかいうワードが出てくるって事は若い子なのかな
プログラミングはむしろ楽するための手段だからどうやったら楽できるかの観点で考えようぜ
648デフォルトの名無しさん
垢版 |
2023/04/29(土) 19:35:35.63ID:eiNFh+Wm
>>647
やっぱり一生懸命なのは若い人なのですね
一生懸命頑張ってもどうにもならないですもんね
649デフォルトの名無しさん
垢版 |
2023/04/29(土) 19:43:44.26ID:eiNFh+Wm
私には何も決められないし、何も権限もないから勉強するだけ時間の無駄でした
一生懸命するだけ無駄でしたね
2023/04/29(土) 19:45:58.20ID:vp07q8LL
わかったchatGPTで慰めてもらえ
651デフォルトの名無しさん
垢版 |
2023/04/29(土) 19:58:39.17ID:3f5XVnjz
せっかく便利なマクロ作ってもあまり感謝されないとき悲しくなりませんか?
652click
垢版 |
2023/04/29(土) 20:08:00.17ID:ueoxn1ZD
組み込み屋ならconstはROMに配置されてRAMを圧迫しないとか考えてそう。
653デフォルトの名無しさん
垢版 |
2023/04/29(土) 20:08:33.11ID:eiNFh+Wm
>>651
過去と他人は変えられないそうです
世の中にはITに疎い人たちがまだまだいるのです
2023/04/29(土) 20:30:49.52ID:vp07q8LL
いや>>639が質問にもなってない事に一向に気付いてない辺り一生懸命さが足りてないな
論文の出だしの問題提起として>>639を前置きして、その後に持論が展開されるならは意味が判るのだが、その後のレス支離滅裂だし
論理的思考力を鍛えるべきだね
2023/04/29(土) 21:55:57.78ID:nnQvwkBD
妬み僻みが先にたって、
集合知にならない日本人の悲しさ
656デフォルトの名無しさん
垢版 |
2023/04/29(土) 22:17:57.28ID:NIajcuht
こういう頭の弱い人が作ると大文字限定とかなりそう
2023/04/30(日) 05:15:21.17ID:9FCAizuG
>>651
こういうツールを使いこなせる俺すげーってなっちゃうから
2023/04/30(日) 06:07:32.17ID:SF8fLpoq
>>653

過去は絶対に変えられないが他人は変えられる可能性がある。
実際『過去と他人は変えられない』という話をどこの誰から聞きかじったのかは知らないが、あなたはその言葉を聞いてその考え方に変わったわけだ。
あなたの立ち居振る舞いによってあなたの周りの人たちは変わる可能性がある。
659デフォルトの名無しさん
垢版 |
2023/04/30(日) 08:01:15.57ID:GVkkkwIT
>>651
そこは乗り越えました。親の気持ちになって与える側だと思って使っている人を暖かく見守りましょう
そして、感謝無く文句しか言わない奴にはID取得して動かないように仕込んでおきましょう(UserNameで取れるか試しておきましょう、大概従業員番号か端末番号です)
660デフォルトの名無しさん
垢版 |
2023/04/30(日) 08:07:07.01ID:kGukyGZB
社内汎用なのにコードにパス掛けてる人って何なの?と思うんですよね。別に機密でも無いしいじり壊すヤツなんていやしないし開けておけよと良く思います
こういう人は自分のやったことを抱え込みたい人が多いんですかね?
2023/04/30(日) 08:37:28.66ID:mp9OxrP6
褒められたい
認められたい
尊敬されたい

何か間違ってますか?
662デフォルトの名無しさん
垢版 |
2023/04/30(日) 09:41:48.68ID:n+FRgVAt
>>658
確実にウザがられますから
2023/04/30(日) 11:07:37.09ID:vWJSQfSu
たまたまマクロ使えただけとかいうクソがいてマジでイラつくわ
664デフォルトの名無しさん
垢版 |
2023/04/30(日) 11:38:27.17ID:n+FRgVAt
>>658
それはあなたがまだまだお若いからです

猛勉強をして医学部になり研修医になり医者になった人が、それからも成功したいと思い開業医になり、猛勉強をしながら人のために何をしたらいいのかと考え続けておられましたが、そうした生活の中で得られた結論は「他人を変えられない」でした
665デフォルトの名無しさん
垢版 |
2023/04/30(日) 12:01:39.99ID:n+FRgVAt
Bingのチャット面白いですね
2023/04/30(日) 13:38:29.83ID:pCoVes+C
>>664
医者と関係なくない?
というかなぜ医者の話をしたの?
2023/04/30(日) 14:58:48.37ID:izKLiPLe
'A列の重複文字を削除したいのですが.RemoveDuplicatesで型が一致しないとでます。
どうすればよいでしょうか。お願いします。

Sub RemoveDuplicatesExample()
Dim lastRow As Long
Dim rng As Range
Dim dupCount As Long
Dim cell As Range

' 最終行を取得する
lastRow = Cells(Rows.Count, "A").End(xlUp).Row

' A列の範囲を取得する
Set rng = Range("A6:A" & lastRow)
2023/04/30(日) 14:59:03.71ID:izKLiPLe
' 文字列を含むセルを数字に変換する
For Each cell In rng
If IsNumeric(cell.Value) Then
cell.Value = Val(cell.Value)
End If
Next cell

' 重複を削除する
dupCount = rng.RemoveDuplicates(Columns:=1, Header:=xlNo)

' メッセージを表示する
MsgBox "重複を" & dupCount & "個削除しました"
End Sub
2023/04/30(日) 16:08:17.99ID:nWN6HH2r
RemoveDuplicates はメソッド メソッドとはオブジェクトを操作する命令文
dupCount はCellの数を削除前と後でCount辺りで別途算出
2023/04/30(日) 17:39:59.36ID:xlDTnGib
「ちょうふく 」と読む人と「じゅうふく」と読む人いるね
671デフォルトの名無しさん
垢版 |
2023/04/30(日) 17:43:09.61ID:n+FRgVAt
>>666
一生懸命勉強をして頑張っている人でも人を変えるのは無理だというのが結論なのにあなたにはそれが出来るのですか?
672デフォルトの名無しさん
垢版 |
2023/04/30(日) 17:58:36.35ID:V4pO/PXO
「じゅうふく」と読む人と「ちょうふく」と読む人いるね
2023/04/30(日) 18:10:45.40ID:SF8fLpoq
すでに回答あるけどエラー表示通り、Long型の変数にRangeを入れようとしてるから

検証してないけど
rng.RemoveDuplicates Columns:=1, Header:=xlNo
で動くかな?カウントは処理前後で取得すればいいかと。
2023/04/30(日) 21:51:10.68ID:izKLiPLe
>>669
>>673
出来ました。ありがとうございます。
2023/04/30(日) 23:47:19.54ID:xlDTnGib
>>672
どちらが正解かな?
2023/04/30(日) 23:54:50.78ID:RAvx61h8
ダブり
677デフォルトの名無しさん
垢版 |
2023/05/01(月) 08:25:17.17ID:Bz4H7pRU
>>675
どちらも正解だけど一般的にはちょうふく
2023/05/02(火) 17:39:15.35ID:s64+rcVS
Option Explicit は使った方が良いですか?
Lastrowが多すぎて外していたんですけどやめた方がいいのかわからない。
直すのも面倒
2023/05/02(火) 18:06:55.02ID:rzS4cwhi
>>678
苦行が好きならどうぞ外してくださいな。
680デフォルトの名無しさん
垢版 |
2023/05/02(火) 19:43:32.75ID:5m1nmjju
>>678
そんなことも人に聞かないとわからない人は外さない方がいい
2023/05/02(火) 19:52:52.48ID:+blsYFqi
Option Explicitを使用することをお勧めします。Option Explicitは、VBAプログラム内で使用されるすべての変数を明示的に宣言することを強制するため、タイプミスやスペルミスなどのエラーを防止するのに役立ちます。

また、変数を宣言することによって、コードの読みやすさと保守性を向上させることができます。たとえば、変数のデータ型が分かっている場合、誤ったデータ型によるエラーを防止することができます。

つまり、Option Explicitを使用することは、より正確で安全なコードを作成するために重要です。したがって、可能な限りOption Explicitを使用することをお勧めします。

また、コードの修正が面倒である場合でも、過去のコードを修正することで、将来的に発生する可能性のあるエラーを防止することができます。
682デフォルトの名無しさん
垢版 |
2023/05/02(火) 19:56:11.18ID:DG7CtCYh
フィルターの項目事、あるいはセルの項目ごとにシートにコピーするかファイルに出力する方法はありますか?
2023/05/02(火) 22:53:54.12ID:W01QlVgz
ありまぁす
2023/05/03(水) 04:56:22.98ID:KcOhtZMX
過去スレにそんなもんは付けないよとかほざく猛者いたな。
理由は支離滅裂だったけど
685デフォルトの名無しさん
垢版 |
2023/05/03(水) 08:16:46.41ID:zwp10Saa
本当ならOption Explicitの他にOption Strictも欲しいくらい。
ただ、それに慣れるとVBSやJavaScriptみたいな言語に当たったときに一瞬躊躇するから
型に関してはそれが読み取れるような変数や定数の名前の付け方をするように心掛けてはいるけど中々難しいんだよね
接頭に型を現すような文字付けるのも有りっちゃ有りなんだけどなんか「あー、初心者がよくやるよね」みたいな感じがしてちょっとイヤ
2023/05/03(水) 08:38:47.67ID:07Dbowlh
jsはletあるやん
687デフォルトの名無しさん
垢版 |
2023/05/03(水) 17:42:16.15ID:6h8oPcDB
BingのAIと会話してみた感想
サイトの記述を引用しているだけだから自然な文章なのは当然
回答パターンがまだまだ少ない
いいねボタンとバットボタンがある
いいねの多い回答だけ残す、バットの多い回答は表示させない
↑であれば当たり感触のない回答しか学習しない、人間の知能を越える事はない
そしてそのやり方は前からあったシミレーションのプログラムと同じ
2023/05/03(水) 17:46:59.65ID:8i/q/Kgr
何そのツッコミ待ち
2023/05/03(水) 19:15:10.32ID:KcOhtZMX
BingのAIはすぐ拗ねちゃうからな
690デフォルトの名無しさん
垢版 |
2023/05/03(水) 19:36:47.70ID:6h8oPcDB
ChatGPT 3.5は出鱈目な回答をしていた 4.0になって当たりざわりのない回答になった
そういう事でしょう?
2023/05/03(水) 19:40:16.52ID:Kv12u2jn
お前がそう思うんならそうなんだろう…お前ん中ではな…
2023/05/03(水) 19:41:04.17ID:Ia3mFb59
有用性とか将来性が分からなければそれでいいんじゃね
勝手に遠ざけてどんどん取り残されればいいさ
2023/05/03(水) 20:14:55.06ID:F2sofNfH
Lastrowってどんな感じで変化させてる?
シート数多すぎて混乱する
694デフォルトの名無しさん
垢版 |
2023/05/03(水) 21:36:02.93ID:6h8oPcDB
野獣先輩 と聞けば回答を途中で打ち切る
しかし 中国 野獣先輩 と尋ねると中国での野獣先輩ブームをスラスラ答える
695デフォルトの名無しさん
垢版 |
2023/05/03(水) 21:51:50.56ID:6h8oPcDB
やーい AIの癖に掛け算も割り算もできない奴〜
2023/05/03(水) 23:21:43.78ID:nQu3mtYe
Bingさんは普通に計算できるが?
2023/05/04(木) 17:35:46.71ID:SG8oVDU2
複雑なのはダメ。
698デフォルトの名無しさん
垢版 |
2023/05/04(木) 19:50:34.95ID:Sg4+jaA6
AIの回答には引用元のリンクがあるので著作権問題に繋がるのもよく分かる
2023/05/05(金) 06:38:40.34ID:P+m46K4i
>>693
クラスモジュールの出番だな
700デフォルトの名無しさん
垢版 |
2023/05/06(土) 10:27:00.05ID:fVwKK7Qd
仮にここから5.6.7とバージョンを重ねてデータベースが増えたと言ってもそれはますます膨大な情報量によって平均への回帰とかよくあるご意見になるだけだと思う
膨大なデータベースがあるからとほぼ全ての人間が間違っていると考える答えを導き出しますか?
そうでなくてもデータベースにない(人間の盲点)情報は出鱈目な回答を生成しますよ

現状は人間が検索していくつものサイトを見て得た情報を代わりに要約してくれる(しかもその要約も正しいか不明、正しいとしても他に見るべき情報は本当にないのか?)程度の品物だと思う
つまり検索エンジン
701デフォルトの名無しさん
垢版 |
2023/05/06(土) 10:47:11.02ID:fVwKK7Qd
人型ロボットの進化も著しいものがあります
しかし直ぐに壊れる、壊れやすいと言う欠点(これは私も盲点だった)が露呈した
「人型ロボットはここまで進化した(している)」という短い動画を見て凄い、凄いと言っていただけでその裏側を見ていなかった
ごく一部の切り取りだった
2023/05/06(土) 12:49:51.00ID:DOnaG3pX
独り言とかどうでもいい
703デフォルトの名無しさん
垢版 |
2023/05/06(土) 13:01:03.66ID:fVwKK7Qd
>>702
あれだけAIが凄いと言っていた人が多いのに?
2023/05/06(土) 15:26:46.40ID:V/5WCcXW
多いんじゃ無くて、特定の少数がやかましいだけ
新しい技術はまずは様子見するのがベテランだろ 触ってみて将来性を鑑みて安定しそうならダッシュで技術を取り込む
今のところずば抜けた検索エンジン程度なら、のんびりザッピングしてじぶんが認める結果を取り込んでた方がマシ
急がば回れ 慌てるコ〇キは貰いが少ない 善は急げで道端の石に蹴躓いてたんじゃ元も子もない
2023/05/06(土) 17:05:38.77ID:uYMm8A/b
様子見するのはベテランじゃない
レイトマジョリティ、あるいはラガードな
2023/05/06(土) 17:25:28.28ID:l5Xh2UOq
これはvbsスレの気持ち悪いのがこっちに移住してきたと考えるのが自然か
2023/05/06(土) 17:25:52.89ID:V/5WCcXW
おお、かっちょいい呼び方 ま、覚えてられないと思うけど
散々鳴り物入りでお披露目されて大勢が一斉に傾いた技術でも、スタンダードに成れなかったのはいくらでもあるし
HTML5 PHP 業界の擦り合わせで潰しに掛かるまであるし 何度も踊らされた経験持つ人ほど出足は鈍い(の意味てことで)
それに比べたらOfficeのVBAなんて、使い込まれてレガシーだけど生き続けてて実績たっぷりだしそれなり充実してて イイネw
708デフォルトの名無しさん
垢版 |
2023/05/06(土) 19:06:41.82ID:fVwKK7Qd
初めての試み
他の人がやっていない事
他と違う事
は往々にして頭がおかしいと言われます
AIがこれらの回答を生成してもそれは同じ
2023/05/07(日) 01:23:52.56ID:31z9TTNB
なんだかこのスレも気持ち悪くなったな。
710デフォルトの名無しさん
垢版 |
2023/05/07(日) 01:49:32.50ID:oPHUqsU3
最初からだぞ
2023/05/07(日) 04:38:26.84ID:31z9TTNB
例の精神病んでる人が最近しつこいしな。
712デフォルトの名無しさん
垢版 |
2023/05/07(日) 05:20:09.87ID:tNDxK8R1
AIに狩野英孝って書いて画像生成させてみ?
女性しか生成されないぞ?
2023/05/08(月) 17:42:02.89ID:4wzuVWZF
5:20に何を言ってるんだ?
714デフォルトの名無しさん
垢版 |
2023/05/08(月) 20:14:43.36ID:sHCjNd7k
肖像権の侵害
2023/05/08(月) 21:20:01.63ID:mh5d7unG
>>693
シート数それぞれの最終行を変数に入れたいなら配列かDictionaryでいいんじゃね?
716デフォルトの名無しさん
垢版 |
2023/05/10(水) 00:19:20.08ID:ispoDagW
そうね
エンティティクラス作ってシート名と最終行をプロパティに持たせる方法と
ディクショナリーかコレクションを使ってシート名をキーに、最終行を値に持つ方法と
2次元配列持って要素にシート名と最終行を持たせて管理する方法を思いついたけど、
最終行以外の何かしらのシート情報を持たせるならクラスを、
そうでなければそれ以外の方法を使う感じになると思うのだけれど、
実際、配列をループして取り出すのとディクショナリーやコレクションにキーを指定して取り出すのはどっちが速いんかね?

個人的にはあまり配列からループして取り出すのはコード書くのが面倒なのと記述がその分長くなるのとObjectとして扱えないから好きではないんだけど。
2023/05/10(水) 12:35:00.38ID:kLH3jMBB
揮発性メモリなら生成コストも比較してる?
2023/05/10(水) 14:00:21.35ID:t+3iUujv
test
2023/05/10(水) 14:06:43.49ID:t+3iUujv
トグルA、Bがあって、
①(初期状態)AがOFF BがOFF
②AをON
③BをON
の順に操作した場合、
まず②で、トグルA_Click()イベントのみ発生
③では、トグルB_Click()イベントだけでなくトグルA_Click()イベントも発生するんだけど、
前からそういう挙動でしたっけ?
2023/05/10(水) 15:00:24.82ID:t+3iUujv
>>719は無視してください。
2023/05/10(水) 15:13:48.51ID:t+3iUujv
トグルA_Click()のイベントプロシージャの中に、
トグルBのValueをFalseにする処理を入れています。(>>719はこのことを失念していました)

トグルBがONになっている状態でトグルAをクリックしてOFF→ONにするとトグルBがOFFになります。
この時、トグルB_Change()イベントが発生するのは分かるのですが、トグルB_Click()イベントも発生します。
これは仕様ですか?
2023/05/10(水) 17:55:26.74ID:iwbfLeO4
仕様です
2023/05/10(水) 19:03:43.77ID:+eiaChgK
ならしようがないね
2023/05/10(水) 21:12:59.13ID:o4erV5Yp
スレチっぽいですが、わかる方いましたら回答をお願いします。
VBAとSeleniumを使用してスクレイピングをしたいのですが
1枚の画像を取得するだけでもメモリ不足と出ます。

ChatGPTに聞いたら
2023/05/10(水) 21:13:48.62ID:o4erV5Yp
Seleniumは外部のWebブラウザを制御するため、メモリ使用量が増加する可能性があります。

と返答がきましたが、VBAでは重くなるのでしょうか?
2023/05/10(水) 21:15:41.06ID:mDjUk4R1
>>724
プログラムが間違ってる可能性のが高い
2023/05/10(水) 23:57:34.43ID:o4erV5Yp
>>726
ありがとうございます。
何か負荷がかかることをしているのかもしれませんね
もう一度見直してみます。
2023/05/11(木) 11:43:08.05ID:1+aaeJbv
そのChatGPTとやらが回答するシチュエーションの、一文字ずつ表示する方法を知りたい とか、もっと前向きに
単にmsgbox出すよりは注目されそうだし(そのうち飽きられるだろうけど)
2023/05/11(木) 11:51:22.37ID:AMweY8Mr
wsCopyTo.Cells(wsCopyTo.Cells.Rows.Count, "A").End(xlUp).Offset(1).Value = today
wsCopyTo.Cells(wsCopyTo.Cells.Rows.Count, "A").End(xlUp).Offset(1).NumberFormat = "mm/dd""(""ddd"")"

日付の書式設定を変えたいのですが
「range クラスの numberformat プロパティを設定できません」と出ます。
どうすればよいでしょうか
2023/05/11(木) 11:58:50.33ID:6FktRVdV
>>729
"mm/dd""(""ddd"")"""
2023/05/11(木) 12:26:29.64ID:AMweY8Mr
>>730
エラーは出なくなりましたが表示形式は変わりません。
これは"を一つ追加したようですがどういった意味があるのでしょう
2023/05/11(木) 13:08:23.72ID:6FktRVdV
>>731
前略Offset(1).Value = Now
733デフォルトの名無しさん
垢版 |
2023/05/12(金) 06:37:47.52ID:RwI7vd5H
仕事でVBAマクロを使用しておりそのマクロではapplication ontime? を使用しエクセルが開かれてから一定時間過ぎたら閉じますか?とメッセージを出す処理をしています
仮にこのブックをブックAとします
ブックAを開いた状態でそのブックとは別のブックを開きます
このブックをブックBとします。
ブックAとブックBを同時に開いた状態でブックAだけを閉じても何故か一定時間経過後ブックAが自動で開きブックを閉じますか?とメッセージがでます。
ブックBのソースコード見てもマクロは組まれておらず何で?と困ってます

一応ブックAの処理に特定のファイル名の時だけメッセージが出るようにしたのですがその処理も勝手にブックAが開いてから流れるため困ってます

わかりにくくてすみませんがアドバイスよろしくお願いします。
734デフォルトの名無しさん
垢版 |
2023/05/12(金) 07:53:35.95ID:hB6iHQ/6
興味深い現象だな
2023/05/12(金) 08:45:29.16ID:273OhBWp
>>733
OnTimeの処理はExcel本体とは別のプロセスが引き受ける仕組みになってる
ブックを同時に開かないよう気をつけるのが一番簡単
勝手に直していいんなら開いてるブックを判定するコードとかブックを閉じる時にタイマーを止める処理を書き足す

任意のタイマーを止める方法は、ちょっとぐぐったことあるけど、設定された時刻が判明しない限り簡単じゃない
この点はみんな苦労してる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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