Excel VBA 質問スレ Part77
at TECH
1:デフォルトの名無しさん
22/07/17 07:07:35.59 tS4zKdphH.net
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part76
スレリンク(tech板)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2:デフォルトの名無しさん
22/07/17 07:10:10.39 tS4zKdphH.net
3行貼り付けても
2行になるんだな この呪文↓
!extend:checked:vvvvv:1000:512
3:デフォルトの名無しさん (ワッチョイ da02-You7)
22/07/17 08:39:01 ykVjpAJL0.net
効果があるのは1行だけど
次のスレ立ての人のためにやってるのだろうね
4:デフォルトの名無しさん
22/07/17 09:31:50.50 v2iZkzZwM.net
Excelの使い方すらわからない馬鹿な人と例のあいつはお断りです
Ruby馬鹿の釣りに引っ掛かる人も馬鹿な人もお断り
5:デフォルトの名無しさん
22/07/17 15:05:00.70 QiBhjgara.net
1行目は本物の呪文
2行目は次回スレ立て時用の呪文
3行目は間違って消す馬鹿除けの保険
6:デフォルトの名無しさん
22/07/17 16:11:39.66 iyijmfZc0.net
>>5
美しくて泣く
7:デフォルトの名無しさん
22/07/17 18:41:41.02 4QBMdWYX0.net
マクロで比較して、無い項目だけを追記するという事をしたいんです。
業務の日程と進捗を管理しているシートを作る際、毎回[元になる大日程表]を編集して自分の作っているシートに手動で転記しています。
これを自動化したいんですが可能でしょうか?
今思っているのは元データと自分のシートでは作り(テンプレ)が違うのでまず元データを自分のシートと同じ列体系にする(E列からG列は元データにはないステータス等の項目があるため)
それを自分のデータのテンプレに貼り付け
貼り付けたテンプレシートと今のシートを比較して今のシートには無いデータだけを今のシートに追記する
ということをしたいのですが可能でしょうか?
またデータは機種ごとの納期順に並べているのですが対応は可能か、また機種を選んで(この機種だけを)比較して追記出来るのかも知りたいです。
機種ごとの区切りは空白をあけてB列に機種を書いて区切っています
区切りは難しいなら後で挿入すればいいかと思っています
1から5行目はハイパーリンク等があり実際にデータがある(始まるのは)のは6行目から800行目くらいです
8:デフォルトの名無しさん
22/07/17 19:44:11.52 jcjjA0XP0.net
細かい所はよくわからんが可能だと思う
ただ丸投げじゃなくて
自分なりに考えて1回やってみて詰まった部分を質問しに来てくれ
あとテンプレートとかはダミーデータ使ってスクショで見せてくれた方が分かりやすい
9:デフォルトの名無しさん
22/07/17 21:53:53.41 lEW2LcQY0.net
クソコードは徹底的に弾圧するのがこのスレです
10:デフォルトの名無しさん
22/07/17 21:56:27.02 JdoDEL2oM.net
コード数が多くなってfunctionを乱立しまくって、日を跨ぐと半日くらい前書いたコードの確認作業に取られるんだけど何か言い手はないですか?
11:デフォルトの名無しさん
22/07/17 22:26:12.07 pcAahLMQ0.net
関数名で表された仕事だけ副作用なくこなし
関数内のコードレベルで何やってんのかまで
呼び出し側が気にしなくていい作りにする。
12:デフォルトの名無しさん
22/07/17 22:43:35.33 jcjjA0XP0.net
>>10
・オブジェクトごとの操作/参照をクラスにまとめる
・テストを書いておく(Debug.Assert)
でも確認作業に半日もかかるのはそもそものやり方自体がおかしいと思う
13:デフォルトの名無しさん
22/07/17 22:47:05.49 4J5I9HKr0.net
>>10
わかりやすい名前を付ける
コメントをしっかり書く
プライドを捨てる
14:デフォルトの名無しさん
22/07/17 23:39:51.10 2HUxCZvI0.net
>>13
私はコメントを書かない
コメントは嘘をつく
コメントとコードが合致していることを保証する方法がない
そもそもコメントのメンテまで手がまわらない
15:デフォルトの名無しさん (ワッチョイ 9d5f-lpz1)
22/07/18 00:59:50 +HoBYfWN0.net
コメントはコメントに過ぎないんだよ。
コードと1対1で書くのも全然書かないのも極端だけど
仕様、要件、目的についての記載であれば嘘になりにくくメンテもしやすい。
コメントを鵜呑みにするのはだめだし、
「# x + y を sum に格納」みたいな意味ないのは論外。
16:デフォルトの名無しさん
22/07/18 01:07:31.38 bK0MLmyI0.net
>>10
痴呆症か?
17:デフォルトの名無しさん
22/07/18 01:59:24.29 eH+87J0s0.net
コメント書くのは基本中の基本て新入社員時代のVBA研修で教わったけどなぁ。
18:デフォルトの名無しさん (スップ Sdfa-Bbgq)
22/07/18 02:40:37 /mPZ8e0Md.net
俺も小学生の時に自転車乗るとき信号無視するなって教わったけど
無視しまくってますごめんなさい
19:デフォルトの名無しさん (ワッチョイ 0d01-qysg)
22/07/18 02:46:44 M8P73NZJ0.net
ついこの間の参院選で、維新の会が横断歩道に車を止めて演説してたな。
許可とってやってるのかもしれないけど、危ないからやめてほしい。
※多分許可とっていないでしょう、維新だから。
※そういうところちゃんとしてるのは自民党だけです。
20:デフォルトの名無しさん (スップ Sdfa-Bbgq)
22/07/18 02:49:23 /mPZ8e0Md.net
気をつけます・・・
21:デフォルトの名無しさん
22/07/18 04:09:47.08 eH+87J0s0.net
かといって書かないよりはマシ
22:デフォルトの名無しさん (ワッチョイ 0593-Xh2z)
22/07/18 05:45:32 RQQtBm3R0.net
>>14
コメントはコードの内容書くんじゃなくて、なぜそうなのか、なぜそうしたのかを書いた方が役立つよ
なぜならなぜそうなのかってのは
23:デフォルトの名無しさん (ワッチョイ 0593-Xh2z)
22/07/18 05:45:44 RQQtBm3R0.net
コードには書き残せないから
24:デフォルトの名無しさん
22/07/18 07:40:03.74 eH+87J0s0.net
書く人によってそれぞれクセが出やすいからコメントあると嬉しい
25:デフォルトの名無しさん
22/07/18 08:00:31.93 sapaqXZv0.net
>>10
先にfunctoinとコメントだけ書いておく
実際のコードはコメントに合わせてのんびり書けば良い
26:デフォルトの名無しさん
22/07/18 14:42:12.42 5BAUqTL80.net
私の質問にいくつかの答えを提示していただきありがとうございます。一応目的を記したコメントは書いてます。
>>12さんの提示されている
・オブジェクトごとの操作/参照をクラスにまとめる
・テストを書いておく(Debug.Assert)
の意味が全くわからないのですが、どなたか分かる方はいらっしゃいませんか?クラスオブジェクトやデバッグの仕方くらいはわかります。
27:デフォルトの名無しさん
22/07/18 18:45:03.91 1+7+/g6j0.net
>>10
1日やっても完結しない巨大なジュールやプロジェクトの場合は
初めに全体の設計をやって仕様書つくるもんじゃね
28:デフォルトの名無しさん
22/07/18 18:47:09.39 1+7+/g6j0.net
モジュール
29:デフォルトの名無しさん
22/07/18 21:18:12.43 N5Namf5L0.net
>>10
モジュールわけてるよね
ねんのため
30:10です
22/07/18 22:44:32.04 5BAUqTL80.net
必要なところはモジュールを分けてます
ただコードを書く際にどことどこに影響あるのかとかを把握するのにいちいち時間がかかる感じです。
設計の段階でミスがある感じですかね?
31:デフォルトの名無しさん (ワッチョイ 7dcd-eHP4)
22/07/18 23:18:16 sapaqXZv0.net
>>30
ミスというよりも、不慣れって感じ
functionの引数が妙に多くなったりすると、大体設計が変な事が多い
一旦散歩でもしてから見直すと吉
32:デフォルトの名無しさん (スプッッ Sdda-/3LY)
22/07/19 00:26:55 ZYi6ztTBd.net
能力が足りないだけだな
33:デフォルトの名無しさん (ワッチョイ 9d5f-GsVe)
22/07/19 05:51:15 I3VG04Vs0.net
>>26
ごく当たり前のことを書いたつもりなんだけど…
> ・オブジェクトごとの操作/参照をクラスにまとめる
例えば、シート内の情報を照会して加工するマクロを考えた場合に、
加工対象の情報をモデル化したクラスやシートAを独立した状態で操作/参照するクラスを作れているか
(シート内のRangeやCellをそのまま操作したりしてないか)
みたいな話
> ・テストを書いておく(Debug.Assert)
いわゆるTDDです。thom先生の記事見た方が早い
URLリンク(thom.hateblo.jp)
多少不完全でもこの2つがそこそこちゃんと出来てたら
たとえ数ヶ月離れてたとしても全体像把握するのに時間はかからないはず
34:デフォルトの名無しさん
22/07/19 06:08:17.00 I3VG04Vs0.net
> クラスやシートA
シートAってなんだ…「シート」です
35:デフォルトの名無しさん
22/07/19 12:34:10.12 QvSB1dsY0.net
>>33
概ね同意だけど
その辺キチンと考えて作れていたらVBA卒業だよ
クラスに限らずメソッド、関数なんかも
それが持つ役割毎に分けて作って
それなりの場所に格納しておけばあまり迷子に
なることもないよね。
ただ、VBAはモジュール毎にフォルダ作って
階層分けられないのがちょっとね。
それと1モジュール1クラスって制限が無ければ
かなり良い感じで作れるのに残念。
36:デフォルトの名無しさん
22/07/19 12:44:16.34 2mzjLS5ja.net
モジュール毎にexcelファイルを分けるとすっきり
37:10です
22/07/19 14:49:29.27 wVlkUnGaM.net
皆さんありがとうございます。
不勉強な所でのつまづきのようですのでまた1から見直してみます。
>>33
わざわざ教えてくれてありがとうございます。参加にさせて貰います。
38:デフォルトの名無しさん
22/07/19 22:45:19.33 kKc46inh0.net
初心者で意味不明な質問で申し訳ありませんが
在庫管理で
返却日が入った品物は行ごと削除して
別シートに貼り付けて整理したいのですが、
Do LoopにIf Thenつけて
Cut Pasteを組み合わせれば
できそうですか?
39:デフォルトの名無しさん
22/07/19 22:51:31.87 BYkKL3v00.net
>>38
できるね
でも返却日でソートしたほうがはやくね
40:デフォルトの名無しさん
22/07/19 23:02:08.60 kKc46inh0.net
>>39
ごめんなさい
自分の知識だとソート云々のやり方が
分からないです
ちょっと検索して勉強してみます
41:デフォルトの名無しさん
22/07/19 23:17:01.56 giabuxB5d.net
>>40
>4を読め
42:デフォルトの名無しさん
22/07/20 06:59:57.92 qBG4++P70.net
>>41
失礼しました
Excelのソートはわかります
VBでソートして別シートに移せるのかと思いました
ワンクリックで
別シートに移すが1番重要視したいことなので
43:デフォルトの名無しさん
22/07/20 07:33:41.33 bRggQ/0k0.net
>>42
Excelの機能のほとんどはVBAでも使える
別シートに移してから、Excelのソート機能をVBAから呼び出すんよ
44:デフォルトの名無しさん (ワッチョイ 0593-Xh2z)
22/07/20 08:21:23 yiSU6HA/0.net
>>42
マクロの記録有効にした状態でExcelの操作をして、
記録したマクロをエディタで覗いてみれば良い
45:デフォルトの名無しさん
22/07/20 08:51:01.06 CrmHohvdd.net
>>42
行操作はコストがかかる作業につながるから可能であればこういう方法でもいいかもね
1.返却日が入力されている行だけフィルタで表示する
2.選択行をコピーする
3.コピーした選択行を別のシートに貼り付けする
4.選択行を削除する
5.フィルタを外す
これを実行前にマクロの記録を実行しておくとサンプルとなるコードができるから
あとはそれをいつでも使えるように加工すればいいかと
46:デフォルトの名無しさん
22/07/20 15:47:00.77 qJwz0nM8a.net
マクロの記録で吐き出されるコードって
ActiveCell とか ActiveRange 前提だったりするから
実際には使い物にならんと思うが
47:デフォルトの名無しさん
22/07/20 17:42:23.39 /TT8b0cuM.net
>>43-45
皆様ありがとうございます
昼過ぎまでモヤモヤしてたのですが
急にソートの活かし方が分かった途端目から鱗でした
お陰様で不恰好でしょうが無事完成できました
本当にありがとうございます!
48:デフォルトの名無しさん
22/07/20 17:49:07.46 mz71iafY0.net
新しいシート用意してソート用に使いたく無ければ
EXCELにADO接続してSQLで取得した
Recordsetをシートに貼り付けるという手もあるよ。
少し大掛かりになってしまうかも知れないけど
そういう仕組みのモジュールを一つ作っておけば
後々同じようなことが出てきた場合に
結構楽になる。
49:デフォルトの名無しさん
22/07/20 18:20:30.35 hcgHwgQ6d.net
そもそもExcelの使い方すらろくにわからん頭で思い付いたことだからまともに相手をしても無駄
50:デフォルトの名無しさん
22/07/20 18:50:54.91 QKDnNcR/0.net
相手のレベルに合わせた回答ができないRuby厨と同じだな
51:デフォルトの名無しさん
22/07/20 20:05:56.52 mz71iafY0.net
>>50
ADO接続なんてネットでちょっと調べればすぐ出てくる。
SQLだってSELECT 〜FROM [シート名$] WHERE〜 程度の簡単なもの。
つまり初心者であってもちょっと調べればすぐに分かる範囲。
相手のレベルというよりお前さんのレベルが初心者以下なのでは?
52:デフォルトの名無しさん
22/07/20 20:30:27.87 yiSU6HA/0.net
ADOって消える消える言われて全然消えないな
53:デフォルトの名無しさん
22/07/20 20:40:21.12 bRggQ/0k0.net
VBAって消える消える言われて全然消えないな
54:デフォルトの名無しさん
22/07/20 21:53:08.66 BaO5YoZA0.net
VBAが消えるはユーザーが勝手に言ってるだけだが
ADOは、公式にOLEDB非推奨が出たけど、取り消されたりしたからな
55:デフォルトの名無しさん
22/07/20 21:55:26.21 QKDnNcR/0.net
>>51
はいはい、Rubyでもやってろ
56:デフォルトの名無しさん
22/07/20 22:01:03.48 yiSU6HA/0.net
>>54
知らなかった
軽く調べてみたら、2018年にOLE DBの非推奨が取り消しになったのね
57:デフォルトの名無しさん
22/07/20 22:53:19.49 dmRxss6E0.net
そいやアレ代替あるの?
58:デフォルトの名無しさん
22/07/21 11:53:53.93 HtCJq1nnM.net
officescriptじゃね
59:デフォルトの名無しさん
22/07/21 12:03:52.84 jQSVcGnW0.net
初心者にありがちなやつ
Select,Selection
Active◯◯
Copy,Paste
他は?
60:デフォルトの名無しさん
22/07/21 12:04:01.31 0IzTDkvO0.net
質問
本日になって急にExcelの描写がおかしくなった。
原因は、描写抑制のVBAがおかしいことを突き止めた。
どうやらFalseだけ実行され、Trueだけが強になって急に作動してなく抑止された状態が続く
同じような経験された人、解決方法しりませんか?
Application.ScreenUpdating = False
Application.ScreenUpdating = True
61:デフォルトの名無しさん
22/07/21 12:26:00.60 J3eN/Kn/0.net
>>60
365だよね?
俺も画面が更新されず止まったままになってて挙動がおかしい
でも実際は動いてるので、保存して開き直し
自分はそれでなんとか凌いだ
62:デフォルトの名無しさん
22/07/21 12:32:01.87 0IzTDkvO0.net
>>61
そう、365です。
描画は止まってても実際は動いてるのも全く一緒ですね。
一度保存して開きなおすと治る?試してみます
63:デフォルトの名無しさん
22/07/21 13:04:59.71 sCo3tE9G0.net
>>59
思い付くのは、Next iとかをNextだけで終わらせるヤツ。
特に若いヤツに多い。
64:デフォルトの名無しさん
22/07/21 13:23:18.80 0IzTDkvO0.net
>>61
保存したり閉じたり開いたり再起動したり更新したり色々試したけど直らず。
結局はApplication.ScreenUpdating関連を全て削除して一時的に回避することにした。
どうやらマイクロソフト自体が障害発生してるみたいだから描画バグの修正もしばらくかかりそう・・・
65:デフォルトの名無しさん
22/07/21 13:29:18.37 V7ED8gxj0.net
>>63
あれ不要だよな、センスが悪い
66:デフォルトの名無しさん
22/07/21 13:53:54.83 iXsJsite0.net
>>63
いや、Nextだけのほうがよくない?
ループ変数を明示したい状況って
・多重ループになっていてどのNextかパッと見でわからない
・For(Each) とNextが遠い
あたりが理由だろうけど、それってコードとしてあんまり綺麗な状態じゃないよね
67:デフォルトの名無しさん
22/07/21 14:11:56.94 gJFaDpGv0.net
>>60
VBEのイミディエイトウインドウなりでApplication.ScreenUpdating = Trueを実行すれば良いだけでは
68:デフォルトの名無しさん
22/07/21 14:33:39.21 yukJsBqWd.net
>>66
自分もつけない派だけど他人に押し付けることはしない
きれいかきれいじゃないかも人それぞれだから押し付けない
厳密な規約がないならマイルールで問題ないのでは
69:デフォルトの名無しさん
22/07/21 15:06:53.79 0IzTDkvO0.net
>>67
Trueにしても更新されないままなんだよね
MS障害で連携とれてないんか
70:デフォルトの名無しさん (ワッチョイ 5ada-XFSu)
22/07/21 16:36:30 sCo3tE9G0.net
いや、Next iとかきちんと書いた方が第三者も読みやすいはずよ。
いわゆるマクロを教える側の人間はきちんと書いてる(若いトレーナーは書いていないのもいるが)
71:デフォルトの名無しさん
22/07/21 17:06:17.40 yukJsBqWd.net
わかったわかった
そうしろそうしろ
72:デフォルトの名無しさん (ワッチョイ da4f-ZYSS)
22/07/21 17:59:40 fm0UHw9/0.net
>>68に同意
自分も付けない派だけど
そもそもそんなデカいループ組むことは稀だし
せいぜい2階層ネストするくらいだし
それ以上ループをネストすることがあったら
まず作りがおかしくないか、
別関数に切り出すかとかの方を先に考える。
ただ、だからといってNextの後に変数名が
付いていたからといって
「律儀な人だなぁ」と思うだけ。
別に付いてても付いてなくても
困らないからどっちでもいい。
73:デフォルトの名無しさん (ワッチョイ da4f-ZYSS)
22/07/21 18:13:16 fm0UHw9/0.net
むしろ繰返しの変数名に「I」とか「j」とか付けてる方が
「ああ、そんな時代もあったなぁ」と思ってしまうわ
そこまでやるならコメントもシングルクォートじゃなくて
「Rem 」って書くべきだろうと。
自分は絶対イヤだけど。
74:デフォルトの名無しさん
22/07/21 18:33:51.30 7CG+4UZvd.net
>>69
GPUオフは?
75:デフォルトの名無しさん
22/07/21 18:41:46.02 ppiq2d/La.net
>>66
C言語とかで
for(int i=0; i<10; ++i){
hoge;
fuga;
}i;
とかだったら卒倒して死ぬな
76:デフォルトの名無しさん
22/07/21 18:45:53.15 lyHIL7tOM.net
卒倒する前にエラーでコンパイル通らないだろ
77:デフォルトの名無しさん (ワッチョイ 912f-cIkS)
22/07/21 19:31:54 +XzLMWod0.net
Nextの後ろに変数書くかどうかで読みやすさが変わるようなプログラム組んでるなら
そもそも他人に教えるようなレベルじゃないと思うわ
あんなのは、まともにインデントすら組めなかった大昔のBASICの残骸だよ
78:デフォルトの名無しさん (ワッチョイ da4f-ZYSS)
22/07/21 19:48:37 fm0UHw9/0.net
>>75
それな
Cに限らずJavaやC++やC#もみんなそんな書き方だし、自分はVB系のような書き方も明示的で良いとは思ってるけど、
その書き方でもあまり困らないから結局のところは慣れの範疇だよね。
79:デフォルトの名無しさん (アウアウウー Sa39-10tP)
22/07/21 19:55:27 YVyuRB69a.net
i付けろとか、どうせ田中とかあの辺が言ってるだけだろ?
なんでも鵜呑みにする奴ってなんなんだろうな
80:デフォルトの名無しさん
22/07/21 20:07:36.67 gJFaDpGv0.net
ついてようがついてまいがインデントさえ正しきゃ好きにしろで終わり
81:デフォルトの名無しさん
22/07/21 20:09:11.68 VJl0SG/3a.net
呆れたわ
お前ら本当に上級者かよ?
82:デフォルトの名無しさん
22/07/21 20:16:07.12 KsRI+X9I0.net
正直どうでもいいくせにご飯何膳いくつもりだよ笑
83:デフォルトの名無しさん
22/07/21 20:57:19.02 KTgkocG90.net
>>69
Twitterでも報告されてるな
84:デフォルトの名無しさん (ワッチョイ 7dcd-eHP4)
22/07/21 21:48:53 Ksn9zkHy0.net
>>80
これな
みんな、そんなにループのネストが多いの?
functionに切り分けて配列を引数に持たせるのは無し?
85:デフォルトの名無しさん
22/07/21 23:26:47.96 obwhbA970.net
>>64
これちょいと前からなってたけどおま環かと思ってfalseにしないで回避してたわ
Twitter見たら前からなってる人も居たみたいね
86:デフォルトの名無しさん
22/07/22 11:13:35.20 y5iLWMChd.net
CreateObject(“Internetexplorer.Application“)が突然エラーを吐くようになった
普通のIEはまだ起動できるのに
他の人どうですか?
87:デフォルトの名無しさん
22/07/22 11:20:33.73 P7NcnZ58M.net
再起動
88:デフォルトの名無しさん
22/07/22 11:21:00.52 3zl+a5GK0.net
それも365?
何かIEはもうやめてEDGEに移行してくれって
随分前からMSからお達しがあったからその関係じゃないかな?
素直にEDGEに移行すれば?
89:デフォルトの名無しさん
22/07/22 11:28:21.24 y5iLWMChd.net
うへ、再起動したら治った
上の人ありがとうございます
でも何でだろう
MS公式アナウンスは2029までこの手法は使えるとのアナウンスだった
移行したいのは山々だがSelenium + Webdriverは面倒くさ過ぎ
90:デフォルトの名無しさん
22/07/22 13:04:28.34 RhXUUwNi0.net
正式なアナウンス?
91:デフォルトの名無しさん
22/07/22 15:29:50.23 Nxononph0.net
スタッフの個人ブログは正式アナウンスじゃないよ
92:デフォルトの名無しさん
22/07/22 19:04:07.42 Jcs8pkA+0.net
こないだのオフ会楽しかったな
URLリンク(blog.tirakita.com)
93:デフォルトの名無しさん
22/07/23 21:33:12.94 1FRkz0ow0.net
密です
94:デフォルトの名無しさん
22/07/23 21:51:44.32 ESnt81dA0.net
>CreateObject(“Internetexplorer.Application“)
IEってアウトプロセスだしCOMの開放忘れでリークしまくってて正常に起動できなくなってたに300ペリカ
95:デフォルトの名無しさん
22/07/25 10:04:05.83 Envy3B37M.net
Next iってVisualじゃないBASICでインデント付けずにフラットに書くことが多かった時代の名残でしょ
96:デフォルトの名無しさん
22/07/25 10:30:09.76 qmzvdF1J0.net
いつの話題だよ
97:デフォルトの名無しさん
22/07/25 10:31:25.87 aQHcIofRd.net
ネタがないから蒸し返したいんでしょ
98:デフォルトの名無しさん
22/07/25 14:14:33.64 TIxxPU060.net
>>95
インデントは余分にメモリ使うからな
99:デフォルトの名無しさん
22/07/25 16:11:05.58 GzNr1keE0.net
その環境だとNEXT IのIを省略した方が省メモリーじゃなかったっけ?
100:デフォルトの名無しさん
22/07/25 16:15:14.91 I+fEELmC0.net
確かコマンドごとにコードが決まっててそれでメモリを削ってた気がする
PRINTの命令コードは何番みたいに
101:デフォルトの名無しさん
22/07/25 16:21:50.51 +mm9gF5i0.net
>>99
あのー
このレベルの懐古厨にマウントは無理だよ
102:デフォルトの名無しさん
22/07/25 16:33:12.29 GzNr1keE0.net
>>100
環境に依ったような気がする
>>101
マウント厨かよw
103:デフォルトの名無しさん
22/07/25 16:38:39.42 phnqPDxNM.net
? が勝手にPRINTになるやつね
行末;とか意外と難しいよね
104:デフォルトの名無しさん
22/07/25 18:11:29.36 aiOwBskw0.net
>>103
わからない馬鹿は書かなければいいのに
105:デフォルトの名無しさん
22/07/25 19:32:28.46 c0BN6IQOM.net
>>103
合ってるよ
?はPRINTの省略でセミコロンはマルチステートメント
マルチステートメントは改行(crlf)するより1バイト分お得
プログラムエリアが20kくらいしかなかったから可読性なんて贅沢の極みの状況だった
106:デフォルトの名無しさん (ワッチョイ 112f-bldA)
22/07/25 19:39:56 6AaHjHdw0.net
マルチステートメントはセミコロンじゃなくてコロンな
ちな今のVBAでも使える
まあ、ソースを削れば早くなるなんてインタプリタ時代の遺物
107:デフォルトの名無しさん (スプッッ Sd33-3G+t)
22/07/25 19:45:38 Gx0l0SiPd.net
>>105
馬鹿の仲間か?
108:デフォルトの名無しさん (ブーイモ MM4d-/hU7)
22/07/25 19:53:42 c0BN6IQOM.net
>>106
あーすまん、フォローありがとう
もうウロ覚えだわ~
109:デフォルトの名無しさん (ワッチョイ 0bda-VsAj)
22/07/25 20:00:39 TIxxPU060.net
行末セミコロンはC言語
110:デフォルトの名無しさん (ワッチョイ 0bda-VsAj)
22/07/25 20:01:10 TIxxPU060.net
行末というか関数の後な
111:デフォルトの名無しさん
22/07/25 20:15:29.72 GzNr1keE0.net
>>103のセミコロンはPRINTの改行抑止の話じゃねーの?
>>110
a = 1; のどこに関数が?
112:デフォルトの名無しさん
22/07/25 21:09:51.78 6AaHjHdw0.net
>>110
行末っていうか文末な
>>111
>>103はそういう意味かもしれんとも思ったが、それに対する>>105は...
PRINT AよりPRINT A;が早いからPRINTはセミコロンつけろっていうのは太古の昔にはあったなあ
113:デフォルトの名無しさん
22/07/25 21:59:22.05 CW1FoItD0.net
如何にこのスレがじじいばかりか
よく分かるレスだなぁ
114:デフォルトの名無しさん
22/07/25 22:26:52.71 2R2hqyBdd.net
しかもスレチな話題をずっとするし害悪でしかない
115:デフォルトの名無しさん (ワッチョイ 5101-R4TS)
22/07/25 22:30:19 oUQ2GGC10.net
・高度IT人材、富士通は最大年収3500万円へ
・AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ
・【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材
・来年度から副業解禁 人材多様化へ―大同生命次期社長
・第一生命HD、副業解禁 約1万5000人対象
・第一生命HD、副業解禁 1万5000人対象―大手生保初
・IHI、国内8000人の副業解禁 重厚長大企業も転機
・IHI、社外兼業を解禁 社内副業もルール化
116:デフォルトの名無しさん
22/07/25 23:25:00.63 qmzvdF1J0.net
高田純次はすごいよな
昔話・自慢話・説教は嫌われるからしないってのを徹底してる
方やここの老害共は
117:デフォルトの名無しさん
22/07/26 18:51:38.02 bRnWAQLB0.net
ブーメラン返ってきてるぞ
118:デフォルトの名無しさん
22/07/27 00:49:40.58 LErGbxXl0.net
2016使っててVBAが複数エクセル開いてると干渉して困ってたけど
タスクバーのアイコンを右クリックして、alt押し続けながらエクセル起動すると
別プロセスで起動できることを最近知った
119:デフォルトの名無しさん (ワッチョイ b910-QN/E)
22/07/27 09:53:31 YpiXqhyl0.net
Windows 10 エクスプローラー [表示]-[列の追加]-[列の選択]
「詳細表示の設定」ダイアログが開いて 詳細 「コメント」をチェック。
エクスプローラーに「コメント」列が追加される。
フォルダに設定されたコメントをVBAで取得する方法があったら教えてください。
120:デフォルトの名無しさん
22/07/27 10:42:22.72 y3iJ04t7M.net
vba shell.application getdetailsof
121:デフォルトの名無しさん
22/07/27 11:00:39.14 elZrgoJKa.net
エクスプローラーが突然アホになる健忘症を治す方法を教えてくれまいか
122:デフォルトの名無しさん
22/07/27 11:13:16.58 elZrgoJKa.net
>119
URLリンク(scripting.cocolog-nifty.com)
123:デフォルトの名無しさん
22/07/27 11:19:05.52 Uy/d0pUP0.net
質問させてください。
URLリンク(keizann.blog.shinobi.jp)
こちらのものを利用させていただきデータを収集しているのですが、これだと希望する場所にたどり着けないです。
例えばXPathのように2番目のliの中の〜みたいな書き方はできるのでしょうか?
124:デフォルトの名無しさん (ワッチョイ 81da-SXL5)
22/07/27 11:42:49 y/T7OYsG0.net
すまん.ワードVBA の質問すれどこにあるか知ってる人がいたら教えて.昔あったけど発見できない.かそってなくなったのかな.アクセスVBAとエクセルVBAしかないのかな.
125:デフォルトの名無しさん (ラクッペペ MMeb-FUOq)
22/07/27 11:48:06 y3iJ04t7M.net
VBAなんでも質問スレ Part3
スレリンク(tech板)
ただし…
126:デフォルトの名無しさん (ワッチョイ 41ce-VsAj)
22/07/27 12:09:26 sKOy45jL0.net
>>123
ざっと見たところ、単純に文字列を検索して切り出してるだけだから、関数の使い方を工夫すればできそうに見える
ここよりその作者に直接聞け
127:デフォルトの名無しさん
22/07/27 15:54:35.41 t59wwtHz0.net
エクスプローラーが突然ハゲになる症状を治す方法を教えてくれまいか
128:デフォルトの名無しさん
22/07/28 21:40:24.00 5mhazMD10.net
>>127
再起動
129:デフォルトの名無しさん
22/07/29 11:13:15.94 OVkASiTwd.net
>>123
最近ウェブページ操作することが多くて参考にならないかと思ってちょいみてみた
情報取得だけならこういう方法も処理が軽いからありなのかと勉強になったわ
取得したHTMLからお目当ての文字列を切り出すのにGetText関数を重層的に用いるのな
GetText自体は簡単なもので、切り出したい文字列の前と後ろにある文字列を指定することで
その間に挟まれている文字列を取得するというもの
何度か繰り返しこの関数を使うことで、目的の文字列にたどり着く
うまいこと前後の文字列を指定してあげないと切り出しが狂ってしまって目標にたどり着けないので、その辺はHTMLをじっくり見ながらやってみるしかない
タグにクラス名とかIDとか細かく設定されてるから、その辺を前後の文字列にうまいこと含ませながらやるのかな
取得したい文字列が存在する複数ページに共通する部分を使っていかないとダメっていう難しさはありそう
130:デフォルトの名無しさん
22/07/29 13:56:47.64 rkOqpdOk0.net
(なんでHTMLDocument使わないんだろう…)
131:デフォルトの名無しさん
22/07/29 14:12:34.81 SQeCuMJr0.net
>>123
XPathを知ってるなら、そっちを使えばいいんじゃないの?
だいたいスクレイピングといえば、FindElementByCssとかFindElementByXPathをつかうもので、
なんでわざわざ別のやり方をやりたいのか意味がわからん。
132:デフォルトの名無しさん (スッップ Sd33-M5Tw)
22/07/29 15:37:25 4rYLg7AVd.net
VBAでシリアル通信を行う場合についての質問です。
CreateFileで指定のCOMポートを開き、WriteFileで指令を送信、ReadFileでデータを格納する流れだと思うのですが、
WriteFileで送る文字列の形式がマニュアルを見ても分かりません。
読み出しメッセージが「STX 10 R PV01 01 ETX BCC」の順だとしたらこれをStringで送ればよいのでしょうか?
それとも対応するASCIIコードを並べて送るのでしょうか?
133:デフォルトの名無しさん
22/07/29 16:37:10.32 idOVuMm7a.net
対応するASCIIコードを並べて送る
134:デフォルトの名無しさん
22/07/29 16:50:05.77 4rYLg7AVd.net
回答ありがとうございます。
WriteFileで1バイトずつコードを送っていき、終端のコードを送るとReadFileで返答を持ってこれるという認識でしょうか?
135:デフォルトの名無しさん
22/07/29 18:22:52.40 Msj+MKnH0.net
COMポート送受信なんて、普通はそれ用のコントロールつかうんじゃね
MSCOMMとか今はもう動かのかな
136:デフォルトの名無しさん
22/07/29 19:50:13.57 rpK6f4vc0.net
>>134
そんな簡単にはできない
137:デフォルトの名無しさん
22/07/29 20:30:37.69 47SIIXKm0.net
>>135
Windows10 64bit でも一応動くみたいだけど一手間(ファイルを移動させたりレジストリを書換えたり)が必要みたい
詳しくは mscomm32.ocx windows10 とかでググって
138:デフォルトの名無しさん
22/07/29 20:43:22.69 47SIIXKm0.net
>>134
別に1バイトずつじゃなくても複数バイトを一気に送れるよ
まあ送信速度に対してCPUの方がアホほど速いから性能上はどっちでも変わらんけど
念のための確認だけど STX が &H53 &H54 &H58 って思ってないよね
139:デフォルトの名無しさん (ワッチョイ 0bda-VsAj)
22/07/29 21:13:37 rpK6f4vc0.net
最近のPCはシリアルポートがついてない方が多いよね
ハイパーターミナルってVISTA以降は入ってないし
140:134
22/07/29 21:44:49.02 4rYLg7AVd.net
回答ありがとうございます
>>135,137
MSCOMMというものを使う方法もあるのですね
調べてみます
>>138
ASCIIコードの対応でSTXが&H2、ETXが&H3ですよね
一気に送るというのは配列で渡すような形ですか?
基礎的な部分から分かっていないのできつい予感が
141:デフォルトの名無しさん
22/07/29 21:58:07.50 Msj+MKnH0.net
つか通信する相手は何だよ?
相手側機器に、通信用のライブラリとかないのか?
142:134
22/07/29 23:12:49.30 4rYLg7AVd.net
>>141
相手はレコーダーと調節計で目的は現在値の読出しです
調節計のほうは専用のソフトがありますがレコーダーのほうはありません
PCで両方に接続して2つから同じタイミングで現在値を読んでExcelに記録していくものを作ろうとしています
143:デフォルトの名無しさん
22/07/29 23:29:37.37 uqH2D3BDd.net
何でExcelで直接入出力する必要があるのか
馬鹿は発想からして馬鹿なんだよな
144:デフォルトの名無しさん
22/07/29 23:58:33.41 47SIIXKm0.net
>>140
> MSCOMMというものを使う方法もあるのですね
可能ならmscomm32.ocx使った方が遥かに楽
Win32APIだとボーレートとかの指定はSetCommState()を呼ばないとダメだし
あと送信はWriteFile()で書き込めばいいだけだけど受信は何らかの要因で読めない時にキャンセルできるようにしないと使い勝手悪いのでSetCommTimeouts()でタイムアウト設定して制御を戻す必要あるけどmscomm32.ocxだと受信でイベントが発生するからそういう処理が楽
> ASCIIコードの対応でSTXが&H2、ETXが&H3ですよね
ああすまんそこは大丈夫なのね、失礼した
> 一気に送るというのは配列で渡すような形ですか?
そう Byte 型の配列を渡す
> 基礎的な部分から分かっていないのできつい予感が
脅かすようで申し訳ないけど結構ハードル高いよ
特にReadFile()の方はバッファサイズを間違えるとExcel自体が落ちたりするし
どうしても茨の道を進みたい/進まざるを得ないならまずはファイルに対してCreateFile/ReadFile/WriteFile/CloseHandleから練習した方がいいかも
145:134
22/07/30 00:32:26.79 EONGri1rd.net
>>144
回答ありがとうございます
制限があるわけではないのでmscomm32.ocxを使う方向で行こうと思います
先が長そうな感じはかなりありますね・・・
まずはCreateFile、ReadFile、WriteFile、CloseHandleでファイルを操作するところからやってみます
146:デフォルトの名無しさん
22/07/30 03:02:20.62 OeV/oYE+0.net
まずVBAでやるべきかどうか考えたほうが良いんじゃね
相手側がそれ用のコンポーネントでも用意してない限り、VBAでやるような案件じゃないぞ
147:デフォルトの名無しさん
22/07/30 03:31:29.08 S23h7zaP0.net
>>123 です。
レスいただいた方々ありがとうございます。
スプレッドシートの ImportXML でXPathは理解しました。
HTML/CSSは書けますがそれ以外はさっぱりで…。
HTMLDocument、FindElementByCss、FindElementByXPathなど
調べていて出てきましたがどう書き出してどうエクセルに書き込むか
一から十までのものが見当たらず挫折しました。
>>129 さん!書き込み、非常に参考になりました。
<td></td>
<td></td>
<td></td>
などは無理なようですが、どうにかclassなどが振ってあるサイトを探せました。
ありがとうございます。
148:デフォルトの名無しさん
22/07/30 03:43:44.39 GJbGwXKe0.net
>>123
if文で真偽値を二度判定するあたりなどは、もうさすがにやめてほしいわ。
149:デフォルトの名無しさん
22/07/30 03:50:55.80 GJbGwXKe0.net
>>147
Cells()だらけなのにExcelシートに値をセットしていないと思うのか?
150:デフォルトの名無しさん
22/07/30 05:00:33.23 eVUB+9l60.net
というか簡単に取れるけど
kabu_kode = ThisWorkbook.Sheets("Sheet2").Cells(1, X).Value
If kabu_kode <> "" Then
driver.Get "URLリンク(finance.yahoo.co.jp) & kabu_kode
Call Sleep(1000) '3秒待つ
ThisWorkbook.Sheets("Sheet2").Cells(2, X).Value = driver.FindElementsByCss("h1._6uDhA-ZV").Item(1).Text '社名
ThisWorkbook.Sheets("Sheet2").Cells(3, X).Value = driver.FindElementsByCss("span._3rXWJKZF").Item(1).Text '株価
Set o_elem1 = driver.FindElementsByCss("dt")
Set o_elem2 = driver.FindElementsByCss("dd")
For Y = 1 To o_elem1.Count
If X = 2 Then ThisWorkbook.Sheets("Sheet2").Cells(Y + 3, 1).Value = o_elem1.Item(Y).Text '凡例を書く
ThisWorkbook.Sheets("Sheet2").Cells(Y + 3, X).Value = o_elem2.Item(Y).Text
Next
End If
151:デフォルトの名無しさん
22/07/30 09:15:05.30 paa5jUiAa.net
>>143
++
ほんそれ
152:デフォルトの名無しさん
22/07/30 16:06:41.35 2k62MWGF0.net
>>143
縛りプレイが大好きなんだよきっと
153:デフォルトの名無しさん (ワッチョイ 79ce-dSCr)
22/07/30 17:59:01 abWJW+vX0.net
Sleep(1000)で3秒?
154:デフォルトの名無しさん (ワッチョイ 79ce-dSCr)
22/07/30 18:00:32 abWJW+vX0.net
kodeが気持ち悪い
そこはkodoかcodeだろ
155:デフォルトの名無しさん
22/07/30 18:40:37.03 zHogqexf0.net
>>145
ARDUINO とかで遊んでるやつもいて
VBA シリアル通信
でググれば事例は出てくるからまずはここら辺を参考にすればいいかと
URLリンク(kats-eye.net)
>>146,151-152 みたいな何の参考にもならないレスは無視していい
156:デフォルトの名無しさん
22/07/30 18:51:57.99 zHogqexf0.net
>>154
喧嘩売ってんの?w
URLリンク(kode.co.jp)
157:デフォルトの名無しさん
22/07/30 19:36:36.39 BNmOiQjDd.net
ローマ字と英語が混ざってる時点で頭悪そうだなとは思う
匿名掲示板以外では口に出さないけど
158:デフォルトの名無しさん
22/07/30 20:21:34.38 hXWLTBTp0.net
>>155
運用することを考慮しない馬鹿
159:デフォルトの名無しさん
22/07/30 21:04:41.17 LxmbT4O1r.net
盛り上がってるところ低レベルの割り込み恐縮ですが
ランダムな値が格納されてる配列の頻度分布を調べたいです
ワークシート関数使わないでできるだけ行数少なく書くならどうするべきでしょうか
160:デフォルトの名無しさん
22/07/30 21:17:32.71 abWJW+vX0.net
>>159
乱数の範囲によって方法が変わってくる
161:デフォルトの名無しさん
22/07/30 21:38:00.74 zHogqexf0.net
>>158
おまえ>>145の状況知ってるの?
まさか状況知らずにダメ出ししちゃう無能君かな?w
162:134
22/07/30 21:41:59.73 EONGri1rd.net
>>155
VBAのシリアル通信で調べていた際にARDUINOという単語を見かけたことはありましたが同じようにシリアル通信ができるのですね
中身を見た限り基本的な部分は同じようにできそうなので参考にしてみます
163:デフォルトの名無しさん
22/07/30 22:52:18.66 bNASqKAqd.net
>>159
CSVで出力してPythonでmatplotlib使えば一発よ
164:デフォルトの名無しさん
22/07/30 22:56:19.11 hXWLTBTp0.net
>>161
典型的なパソコンにちょっと詳しいだけの馬鹿
165:デフォルトの名無しさん
22/07/30 23:02:16.93 wkD5AAYO0.net
>>164
完全同意!
>>164とかまさにそれだよな
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
86日前に更新/265 KB
担当:undef