Excel VBA 質問スレ Part77

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

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

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

※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/07/17(日) 07:10:10.39ID:tS4zKdphH
3行貼り付けても
2行になるんだな この呪文↓

!extend:checked:vvvvv:1000:512
2022/07/17(日) 08:39:01.46ID:ykVjpAJL0
効果があるのは1行だけど
次のスレ立ての人のためにやってるのだろうね
4デフォルトの名無しさん (ワンミングク MM09-Oa5i)
垢版 |
2022/07/17(日) 09:31:50.50ID:v2iZkzZwM
Excelの使い方すらわからない馬鹿な人と例のあいつはお断りです
Ruby馬鹿の釣りに引っ掛かる人も馬鹿な人もお断り
5デフォルトの名無しさん (アウアウウー Sa39-qysg)
垢版 |
2022/07/17(日) 15:05:00.70ID:QiBhjgara
1行目は本物の呪文
2行目は次回スレ立て時用の呪文
3行目は間違って消す馬鹿除けの保険
2022/07/17(日) 16:11:39.66ID:iyijmfZc0
>>5
美しくて泣く
7デフォルトの名無しさん (ワッチョイ 6aba-6/kI)
垢版 |
2022/07/17(日) 18:41:41.02ID:4QBMdWYX0
マクロで比較して、無い項目だけを追記するという事をしたいんです。
業務の日程と進捗を管理しているシートを作る際、毎回[元になる大日程表]を編集して自分の作っているシートに手動で転記しています。
これを自動化したいんですが可能でしょうか?

今思っているのは元データと自分のシートでは作り(テンプレ)が違うのでまず元データを自分のシートと同じ列体系にする(E列からG列は元データにはないステータス等の項目があるため)
それを自分のデータのテンプレに貼り付け
貼り付けたテンプレシートと今のシートを比較して今のシートには無いデータだけを今のシートに追記する

ということをしたいのですが可能でしょうか?
またデータは機種ごとの納期順に並べているのですが対応は可能か、また機種を選んで(この機種だけを)比較して追記出来るのかも知りたいです。

機種ごとの区切りは空白をあけてB列に機種を書いて区切っています
区切りは難しいなら後で挿入すればいいかと思っています

1から5行目はハイパーリンク等があり実際にデータがある(始まるのは)のは6行目から800行目くらいです
8デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
垢版 |
2022/07/17(日) 19:44:11.52ID:jcjjA0XP0
細かい所はよくわからんが可能だと思う
ただ丸投げじゃなくて
自分なりに考えて1回やってみて詰まった部分を質問しに来てくれ
あとテンプレートとかはダミーデータ使ってスクショで見せてくれた方が分かりやすい
2022/07/17(日) 21:53:53.41ID:lEW2LcQY0
クソコードは徹底的に弾圧するのがこのスレです
2022/07/17(日) 21:56:27.02ID:JdoDEL2oM
コード数が多くなってfunctionを乱立しまくって、日を跨ぐと半日くらい前書いたコードの確認作業に取られるんだけど何か言い手はないですか?
2022/07/17(日) 22:26:12.07ID:pcAahLMQ0
関数名で表された仕事だけ副作用なくこなし
関数内のコードレベルで何やってんのかまで
呼び出し側が気にしなくていい作りにする。
12デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
垢版 |
2022/07/17(日) 22:43:35.33ID:jcjjA0XP0
>>10
・オブジェクトごとの操作/参照をクラスにまとめる
・テストを書いておく(Debug.Assert)

でも確認作業に半日もかかるのはそもそものやり方自体がおかしいと思う
2022/07/17(日) 22:47:05.49ID:4J5I9HKr0
>>10
わかりやすい名前を付ける
コメントをしっかり書く
プライドを捨てる
2022/07/17(日) 23:39:51.10ID:2HUxCZvI0
>>13
私はコメントを書かない

コメントは嘘をつく
コメントとコードが合致していることを保証する方法がない
そもそもコメントのメンテまで手がまわらない
2022/07/18(月) 00:59:50.77ID:+HoBYfWN0
コメントはコメントに過ぎないんだよ。
コードと1対1で書くのも全然書かないのも極端だけど
仕様、要件、目的についての記載であれば嘘になりにくくメンテもしやすい。
コメントを鵜呑みにするのはだめだし、
「# x + y を sum に格納」みたいな意味ないのは論外。
16デフォルトの名無しさん (ワッチョイ 768e-/3LY)
垢版 |
2022/07/18(月) 01:07:31.38ID:bK0MLmyI0
>>10
痴呆症か?
2022/07/18(月) 01:59:24.29ID:eH+87J0s0
コメント書くのは基本中の基本て新入社員時代のVBA研修で教わったけどなぁ。
2022/07/18(月) 02:40:37.08ID:/mPZ8e0Md
俺も小学生の時に自転車乗るとき信号無視するなって教わったけど
無視しまくってますごめんなさい
19デフォルトの名無しさん (ワッチョイ 0d01-qysg)
垢版 |
2022/07/18(月) 02:46:44.22ID:M8P73NZJ0
ついこの間の参院選で、維新の会が横断歩道に車を止めて演説してたな。
許可とってやってるのかもしれないけど、危ないからやめてほしい。

※多分許可とっていないでしょう、維新だから。
※そういうところちゃんとしてるのは自民党だけです。
2022/07/18(月) 02:49:23.80ID:/mPZ8e0Md
気をつけます・・・
2022/07/18(月) 04:09:47.08ID:eH+87J0s0
かといって書かないよりはマシ
2022/07/18(月) 05:45:32.41ID:RQQtBm3R0
>>14
コメントはコードの内容書くんじゃなくて、なぜそうなのか、なぜそうしたのかを書いた方が役立つよ
なぜならなぜそうなのかってのは
2022/07/18(月) 05:45:44.24ID:RQQtBm3R0
コードには書き残せないから
2022/07/18(月) 07:40:03.74ID:eH+87J0s0
書く人によってそれぞれクセが出やすいからコメントあると嬉しい
2022/07/18(月) 08:00:31.93ID:sapaqXZv0
>>10
先にfunctoinとコメントだけ書いておく
実際のコードはコメントに合わせてのんびり書けば良い
2022/07/18(月) 14:42:12.42ID:5BAUqTL80
私の質問にいくつかの答えを提示していただきありがとうございます。一応目的を記したコメントは書いてます。
>>12さんの提示されている
・オブジェクトごとの操作/参照をクラスにまとめる
・テストを書いておく(Debug.Assert)
の意味が全くわからないのですが、どなたか分かる方はいらっしゃいませんか?クラスオブジェクトやデバッグの仕方くらいはわかります。
2022/07/18(月) 18:45:03.91ID:1+7+/g6j0
>>10
1日やっても完結しない巨大なジュールやプロジェクトの場合は
初めに全体の設計をやって仕様書つくるもんじゃね
2022/07/18(月) 18:47:09.39ID:1+7+/g6j0
モジュール
2022/07/18(月) 21:18:12.43ID:N5Namf5L0
>>10
モジュールわけてるよね
ねんのため
2022/07/18(月) 22:44:32.04ID:5BAUqTL80
必要なところはモジュールを分けてます
ただコードを書く際にどことどこに影響あるのかとかを把握するのにいちいち時間がかかる感じです。

設計の段階でミスがある感じですかね?
2022/07/18(月) 23:18:16.81ID:sapaqXZv0
>>30
ミスというよりも、不慣れって感じ
functionの引数が妙に多くなったりすると、大体設計が変な事が多い
一旦散歩でもしてから見直すと吉
32デフォルトの名無しさん (スプッッ Sdda-/3LY)
垢版 |
2022/07/19(火) 00:26:55.88ID:ZYi6ztTBd
能力が足りないだけだな
33デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
垢版 |
2022/07/19(火) 05:51:15.85ID:I3VG04Vs0
>>26
ごく当たり前のことを書いたつもりなんだけど…

> ・オブジェクトごとの操作/参照をクラスにまとめる
例えば、シート内の情報を照会して加工するマクロを考えた場合に、
加工対象の情報をモデル化したクラスやシートAを独立した状態で操作/参照するクラスを作れているか
(シート内のRangeやCellをそのまま操作したりしてないか)
みたいな話

> ・テストを書いておく(Debug.Assert)
いわゆるTDDです。thom先生の記事見た方が早い
https://thom.hateblo.jp/entry/2019/08/11/120027

多少不完全でもこの2つがそこそこちゃんと出来てたら
たとえ数ヶ月離れてたとしても全体像把握するのに時間はかからないはず
34デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
垢版 |
2022/07/19(火) 06:08:17.00ID:I3VG04Vs0
> クラスやシートA
シートAってなんだ…「シート」です
35デフォルトの名無しさん (ワッチョイ da4f-ZYSS)
垢版 |
2022/07/19(火) 12:34:10.12ID:QvSB1dsY0
>>33
概ね同意だけど
その辺キチンと考えて作れていたらVBA卒業だよ
クラスに限らずメソッド、関数なんかも
それが持つ役割毎に分けて作って
それなりの場所に格納しておけばあまり迷子に
なることもないよね。

ただ、VBAはモジュール毎にフォルダ作って
階層分けられないのがちょっとね。
それと1モジュール1クラスって制限が無ければ
かなり良い感じで作れるのに残念。
36デフォルトの名無しさん (アウアウウー Sa39-qysg)
垢版 |
2022/07/19(火) 12:44:16.34ID:2mzjLS5ja
モジュール毎にexcelファイルを分けるとすっきり
2022/07/19(火) 14:49:29.27ID:wVlkUnGaM
皆さんありがとうございます。
不勉強な所でのつまづきのようですのでまた1から見直してみます。
>>33
わざわざ教えてくれてありがとうございます。参加にさせて貰います。
38デフォルトの名無しさん (ワッチョイ 8963-9APT)
垢版 |
2022/07/19(火) 22:45:19.33ID:kKc46inh0
初心者で意味不明な質問で申し訳ありませんが

在庫管理で
返却日が入った品物は行ごと削除して
別シートに貼り付けて整理したいのですが、
Do LoopにIf Thenつけて
Cut Pasteを組み合わせれば
できそうですか?
2022/07/19(火) 22:51:31.87ID:BYkKL3v00
>>38
できるね
でも返却日でソートしたほうがはやくね
40デフォルトの名無しさん (ワッチョイ 8963-9APT)
垢版 |
2022/07/19(火) 23:02:08.60ID:kKc46inh0
>>39
ごめんなさい
自分の知識だとソート云々のやり方が
分からないです
ちょっと検索して勉強してみます
41デフォルトの名無しさん (スプッッ Sdfa-/3LY)
垢版 |
2022/07/19(火) 23:17:01.56ID:giabuxB5d
>>40
>4を読め
42デフォルトの名無しさん (ワッチョイ 8963-9APT)
垢版 |
2022/07/20(水) 06:59:57.92ID:qBG4++P70
>>41
失礼しました
Excelのソートはわかります
VBでソートして別シートに移せるのかと思いました

ワンクリックで
別シートに移すが1番重要視したいことなので
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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