1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net] !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
445 名前:デフォルトの名無しさん [2022/08/28(日) 22:27:57.16 ID:uLwcj+rg0.net] excel2019 win10 設定シートに各項目を入力させたらそれに応じて別シートに計算結果を入力させるVBAを書いてる途中なのですが、 VBAソースを書いてる途中に設定シートにこんな数値も持たせたい、 入力画面のレイアウトをあれこれ変えたいと行や列の挿入をしたくなってしまうのですが そうするとVBAソースの方がずれたままになってしまうのですが、シートに挿入をしたら それにともなって既にかけている部分だけでもソースコードのcellsやrangeの値が更新されてくれたりしないでしょうか?
446 名前:デフォルトの名無しさん [2022/08/28(日) 22:36:45.40 ID:bZvgSFoz0.net] >>445 参照先は自動更新されない セルに名前を付けてその名前で参照すればよい
447 名前:デフォルトの名無しさん [2022/08/28(日) 22:37:28.82 ID:z6hd8oqM0.net] 名前付きセル範囲 https://thom.hateblo.jp/entry/2016/07/08/001933
448 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 20:34:19.97 ID:6xba6Hkk0.net] おまいらが毛がどうのこうので喜ぶがらマジで頭ツルッツルにしてきたぞ
449 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 22:48:42.98 ID:Qu5uun0od.net] >>445 コレクションに格納するのが攻守最強
450 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 02:50:20.75 ID:Ie2cpGsY0.net] >>449 そのコレクションの中身はどうやって保守するのかね?
451 名前:デフォルトの名無しさん [2022/08/31(水) 19:22:22.41 ID:QCzzbP6t0.net] >>448 ツルツルがいいのは下の毛です
452 名前:デフォルトの名無しさん mailto:sage [2022/08/31(水) 22:52:05.08 ID:q/z2hnkB0.net] >>451 お、おうw しかし真夏にはツルッツルもなかなか良いわ涼しい
453 名前:デフォルトの名無しさん [2022/09/01(木) 03:46:18.56 ID:Xg3rwxDQ0.net] win10 excel2019 Sub y() Dim st As Range Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名") If st is Nothing Then else Debug.Print st.Row end if End Sub これをすると"氏名"文字列に一致したセルがrangeオブジェクトで貰えますけど 本当に欲しいのは氏名のx個下のrangeオブジェクトなのです。 氏名のセルと参加者の開始セルの相対位置は固定的です。 氏名はいろいろな名前があるのでマッチングしづらいので氏名で位置を探って取り込んでいます。 rowやcolumnくらいしか使いませんけど、すっきり感としては本当に欲しいのは氏名の開始セルのrangeオブジェクトなのです。 返り値のrangeオブジェクトをずらすということはできますでしょうか?
454 名前:453 mailto:sage [2022/09/01(木) 03:53:25.83 ID:Xg3rwxDQ0.net] Set st = Worksheets("参加者").Range("A1:BA80").Find(What:="氏名").offset(1,1) こんな感じで解決しました。 動いてるのはまぐれでしょうか?
455 名前:デフォルトの名無しさん [2022/09/01(木) 06:49:22.79 ID:UMivoEC40.net] >>453 何やってるかわからんままコピペして動かしてる感をヒシヒシと感じるので Rangeオブジェクト Findメソッド Offsetプロパティ について理解できるまで解説サイト読んでください あと、>>445 についても回答付いてるんだからなんかリアクションしてください
456 名前:デフォルトの名無しさん [2022/09/01(木) 09:42:20.83 ID:wgtUDrt5a.net] 451 おまわりさんこいつです
457 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:01:37.99 ID:Ak8bAeS9M.net] VIO脱毛する人が増えてる
458 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 10:51:28.10 ID:Xg3rwxDQ0.net] >>455 何度か書き込もうとしたんですけど、書き込みエラーになってしまっていました。 なんだかレスアンカーが不正とか出てきてたのでわからなくなりました。 レスアンカーをつけちゃいけないみたいな制約? >>445 に回答いただいた方ありがとうございました。 これも書き込めないかもしれませんが。 RangeオブジェクトのOffsetメソッド?は結合セルがやっかいなのですね。 結合セルでない時のエラー処理を加えると結局コードが汚くなっていくジレンマでした。 オブジェクト型がなかなか理解できません。 dim wf as object set wf = worksheetfunction とやってもwf.でエクセル関数を使えるようになるわけではないみたいですし。 ありがとうございました。
459 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 11:00:01.20 ID:Xg3rwxDQ0.net] Function wf() As WorksheetFunction Set wf() = WorksheetFunction End Function こっちで呼び出し短縮は出来ました。初めて使いましたfunction
460 名前:デフォルトの名無しさん [2022/09/01(木) 14:07:42.09 ID:Xg3rwxDQ0.net] 名前付きセル範囲を使うためにnamesコレクションを理解しようとしてるのですが、 activeworkbook.namesをfor eachに入れると現在は1個しか出て来なくて 値が =#NAME? こんなのです。エクセルの方から名前の管理を開いてもこの名前は出てきませんし、何も出てきません。 何なのでしょうか?この値は? なにも設定されてない時の値かと思ってワークシートのあるセルに名前の設定をしみたのですが、 やはりこの値は残ったままでした。 RefersToでもvalueと同じく =#NAME?
461 名前:460 mailto:sage [2022/09/01(木) 14:14:01.95 ID:Xg3rwxDQ0.net] わからないまま、vbaから非表示を表示させるコードをコピペして削除しておきました。 こんな名前作った覚えはないですが
462 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 14:38:52.05 ID:nUWOz2Sg0.net] そっか、うんうん、非表示を表示ね、良かったね はい次の方
463 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 15:07:23.09 ID:xiyCUJHG0.net] ニートならロン毛にしろよ
464 名前:デフォルトの名無しさん [2022/09/01(木) 19:17:21.60 ID:Xg3rwxDQ0.net] Range型と配列の違いが後一歩わからないのですが、 Sheet1にA1=10,A2=20,A3=30,B1=40,B2=50,B3=60....みたいにしてar(2,2)と近い感じにしてます。 Sub Sample1() Dim ar(2, 2) As Variant ar(0, 0) = 10 ar(1, 0) = 20 ar(2, 0) = 30 ar(0, 1) = 40 ar(1, 1) = 50 ar(2, 1) = 60 ar(0, 2) = 70 ar(1, 2) = 80 ar(2, 2) = 90 Debug.Print TypeName(ar) Debug.Print TypeName(Worksheets("Sheet1").Range("A1:C3")) End Sub arはvariant型の配列でWorksheets("Sheet1").Range("A1:C3")はrange型のオブジェクトになるんですよね。 感覚的にはどちらも配列を渡している気分なのですが、セル範囲参照のrangeだからrange型オブジェクトになるってだけですか?
465 名前:デフォルトの名無しさん [2022/09/01(木) 19:18:06.47 ID:EeQXBP72d.net] 馬鹿過ぎてやばい奴が来てる
466 名前:464 mailto:sage [2022/09/01(木) 19:23:31.46 ID:Xg3rwxDQ0.net] for each のinの後に配列をおいても、range型オブジェクトをおいても 同じように中身を取り出してくれるから混乱してしまったのかもしれません。
467 名前:デフォルトの名無しさん [2022/09/01(木) 19:28:08.64 ID:bYXIuDKK0.net] もし Dim ar(2, 2, 2) As Variant なら3次元の配列としか言いようがない
468 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 20:43:50.82 ID:QMR92n1t0.net] 本人は切実なんだろうけどイマイチ何を理解しようとしているのかが汲み取れない。 とりあえず、シートは二次元配列みたいなものと思えばいいんじゃないかなぁ。 バリアント型の変数に範囲指定したrangeを代入したら配列が出来上がるんだから。。。 って、こういうの説明するのって余計に混乱させそうで怖いのよね。
469 名前:デフォルトの名無しさん mailto:sage [2022/09/01(木) 22:31:39.49 ID:xiyCUJHG0.net] なんでそんな事やっているんだろう。。??
470 名前:デフォルトの名無しさん [2022/09/01(木) 23:45:17.73 ID:7Zuj6Csb0.net] Rangeオブジェクトと配列、全く異質のものなのに同じ代入インターフェースがつかえるのが不思議なのでしょう 女学生は貧困で給食費すら払えないのに上級国民は交通費で200万円貰えるのですから
471 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 00:10:13.04 ID:vXxCvmAd0.net] >>464 配列には数字しか入っていませんが、 Rangeオブジェクトには数字以外に色や罫線やハイパーリンクなど色々な情報が入っています。というかワークシートのセルそのもの(オブジェクト)です。
472 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 03:22:55.43 ID:XYWvvS0T0.net] >>464 オブジェクトにはデフォルトプロパティというのがあってな オブジェクトを参照してるつもりでも、実はそのデフォルトプロパティを参照してるんだよ Worksheets("Sheet1").Range("A1:C3")はRange型だが、 そのデフォルトプロパティは2次元配列なのだよ
473 名前:デフォルトの名無しさん (ワッチョイ 023e-y80L) [[ここ壊れてます] .net] ttps://www.tipsfound.com/vba/18014 このコードでcsvファイルをエクセルの指定のシートに取り込めますか?
474 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 07:13:47.06 ID:rviUcujq0.net] >>473 やってみて聞いてるの?自分でやるのが面倒臭いからとりあえず聞いてるだけ?
475 名前:デフォルトの名無しさん [2022/09/02(金) 07:18:17.22 ID:K+fb6kZO0.net] 最近のレベル低下には目を見張るものがあるな
476 名前:デフォルトの名無しさん [2022/09/02(金) 07:25:48.67 ID:+uzTYabFM.net] 総合相談所で総スカンされた馬鹿だろ
477 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 11:01:00.75 ID:BYdQXtrB0.net] いや、そもそも何でそんな事やりたいのか?? という質問自体がさ
478 名前:デフォルトの名無しさん [2022/09/02(金) 12:33:00.40 ID:MAC5jHq+0.net] よそのサイトなんだから作った奴にきけばいいのにと思う今日この頃
479 名前:デフォルトの名無しさん mailto:sage [2022/09/02(金) 14:51:15.82 ID:BYdQXtrB0.net] ど正論出ました 終了
480 名前:デフォルトの名無しさん (ワッチョイ 5f3e-NodX) [[ここ壊れてます] .net] >>476 あれ総スカンだったんですか? 外部データの取り込みでcドライブのファイルを取り込んでいるのに そのエクセルのファイルを他の人にコピーして渡したら同じ場所にファイルを配置しているのにファイルが読み込めないって聞いただけなのに笑
481 名前:デフォルトの名無しさん mailto:sage [2022/09/03(土) 12:58:16.39 ID:WuOEJ3Bid.net] あっちでも総スカンだしここでも総スカンなんだからもういいでしょ レベル低いよあんた
482 名前:デフォルトの名無しさん [2022/09/03(土) 14:11:09.43 ID:fgoOqg3v0.net] しつこい馬鹿
483 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 02:41:16.33 ID:+4pXrWCU0.net] 向こうの総合相談スレはこのスレと違って厳しい人ばかりだからな。
484 名前:デフォルトの名無しさん [2022/09/04(日) 17:26:08.83 ID:nTptsQZA0.net] >>483 VBAのスレよりも質問スレは厳しい人ばかりなんですね
485 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 21:22:49.28 ID:+4pXrWCU0.net] 少しでも的外れな質問したら総スカンだからな。 初級者だろうが容赦ないのが向こう。
486 名前:デフォルトの名無しさん [2022/09/04(日) 22:38:27.70 ID:I+EDFKibr.net] replace関数でワイルドカードを使用してるのですが、 うまく置換していくれないのでなぜですか? やりたいこと A1セルのKKK1111というデータを2222に変換したい replace("A1","*" & "K"& "*","2222" )
487 名前:デフォルトの名無しさん (ワッチョイ 07a5-Iguz) mailto:sage [[ここ壊れてます] .net] REPLACE(文字列, 開始位置, 文字数, 置換文字列)
488 名前:デフォルトの名無しさん mailto:sage [2022/09/04(日) 23:39:15.09 ID:+4pXrWCU0.net] 優しいなみんな 総合スレだったらフルボッコ
489 名前:デフォルトの名無しさん [2022/09/05(月) 18:43:28.63 ID:8FlTtg5u0.net] 初心者あるあるなんだろうか
490 名前:デフォルトの名無しさん [2022/09/05(月) 22:48:54.81 ID:C53zNTJD0.net] ありがとうございました。 ユーザー定義型と連想配列を知って少し前進しました。 検索掛けてもなかなかでないので教えてください。 dim i for i.... 使い終わったらiを未定義に戻したいんですが、 宣言の反対?になるような未定義に戻す関数?ステートメント?はありませんか?
491 名前:デフォルトの名無しさん mailto:sage [2022/09/05(月) 23:44:13.97 ID:ZiXiUX+x0.net] 無いし気にする必要もない
492 名前:デフォルトの名無しさん [2022/09/06(火) 02:21:14.99 ID:xcONMZhZ0.net] >>490 ちなみに戻したい理由は何?
493 名前:デフォルトの名無しさん [2022/09/06(火) 03:38:48.46 ID:DWdJNYk/d.net] 馬鹿に理由を問う虚しさ
494 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 05:21:21.45 ID:Fb+lfM05d.net] 変数は使い捨てだよVBAの場合
495 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 06:55:14.80 ID:FWLy+pWW0.net] プロシージャ内で宣言した変数ならプロシージャを抜ければクリアされるしマクロ全体が終了すれば全てクリアされるからあまり気にしない。 privateやpublicで宣言したオブジェクトなら明示的にnothingをsetすることはあるけど、イマドキのPCでメモリ解放もあまり気にする必要はない気もする。 エラーで止まったときを考えると念の為しておくくらいかなぁ。
496 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net] 初心者なのでプロシージャ内で処理の順番を変えたくなる時があります。 使う直前に宣言したいのでプロシージャの初めに宣言は出来ればしたくありません。 コピペでソースコードを入れ替えて処理の順番を変えるとforが1回目とfor2回目が入れ替わってしまう事があります。 だから毎度forを使う前は、foreacheもそうですが、宣言が必要かをプロシージャ内を戻って探します。 forが終わるたびに未定義に出来ればいいなと思ったのは使い終わった変数名が後からかぶっても 使い終わった時点で未定義に戻しておけばエラーも不具合も出ないからです。 他の言語だとあるのであるかなと思ったのです。
497 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 10:03:36.29 ID:Z9J6cI+IM.net] はい、わかりました
498 名前:デフォルトの名無しさん [2022/09/06(火) 10:56:34.50 ID:MUc/w1ud0.net] >>496 >他の言語だとある これ本当?
499 名前:デフォルトの名無しさん [2022/09/06(火) 11:47:55.76 ID:DWdJNYk/d.net] 馬鹿ではなく糖質かな
500 名前:デフォルトの名無しさん [2022/09/06(火) 11:53:04.38 ID:o3g0SSKzd.net] 会社のパソコンでvbsからエクセルvbaを起動させメール本文、添付ファイルを作成し添付、outlookでメール送信をしたいのですがOutlookが起動しません。 エクセルから手動でvbaを起動すると正常に動作するのですが、vbsから起動するとタスクバーのエクセルが点滅し停止します。 特にエラーを吐いている様子はありません。 何か思いあたる部分があればご教示ください
501 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:06:14.05 ID:QxRWO4Sk0.net] 漏れの推測だけど、 >タスクバーのエクセルが点滅し これは、バックグランドで起動しているのでは? それで、エクセル内のマクロなどが起動しないとか?
502 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 12:18:01.17 ID:iobTnTaB0.net] >>498 定義済みが未定義になるわけじゃないけど ブロックスコープとかいうやつだな 残念ながら旧VBやVBAにはない。VB.NETにはあるけど VBAの一番狭いスコープはプロシジャ なので、プロシジャの先頭に宣言まとめとけって作法がある
503 名前:デフォルトの名無しさん [2022/09/06(火) 13:03:51.66 ID:BhZhCXYFd.net] >501 vba自体は動作しております。 手動でvbaを起動するとエクセルが開き添付ファイルなどを作成し、Outlookで送信するのですが vbsでの起動だと添付ファイルまでは作成するのですが、Outlookが立ち上がらず、タスクバーのエクセルが点滅して動作が止まります。 ネットで調べても事例が出てこず、会社のパソコンなのでシステム管理者に制限をかけられているのか… 何か調べる方法がありましたら教えてください
504 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:07:25.60 ID:Z9J6cI+IM.net] printfデバッグでどこまで動いているか確かめましょう!
505 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 13:13:46.25 ID:Td+5EGNEa.net] >>496 始めに宣言を書いている方が探しやすいと思うけど 要らなさそうなものはまとめてコメントして確認すればいいわけだし
506 名前:デフォルトの名無しさん (ワッチョイ 07da-oTx6) mailto:sage [[ここ壊れてます] .net] VBAでメールとか初めて見た
507 名前:デフォルトの名無しさん (ワッチョイ e72f-HH83) mailto:sage [[ここ壊れてます] .net] >>500 手動で実行できるなら、VBSで起動しているときのユーザとその権限があやしい つかエラー吐いてないんじゃなくて、ちゃんとエラー捕まえられてないだけだと思うが あとスクリプト系からのメール送信はいろいろセキュリティ周りでチェックされるかもしれん とくに会社で管理されてるようなPCなら、ちゃんと管理者に許可とってからやれよ
508 名前:デフォルトの名無しさん (ワッチョイ 2749-DXwO) mailto:sage [[ここ壊れてます] .net] メール送信用のc#のexeつくって呼び出させるようにしたことならある あとsendgridAPIよぶの 前者は他にも使い回したな。.NETcoreだった気がするからいつまで使えるやら
509 名前:デフォルトの名無しさん (ワッチョイ 5f01-yqJ9) mailto:sage [[ここ壊れてます] .net] >>498 あるものもある、例えばPowerShellにはそのものズバリのRemove-Variableなんてものがあったりする
510 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 16:28:13.42 ID:QxRWO4Sk0.net] >>503 >タスクバーのエクセルが点滅して動作が止まります バックグランドで起動しているだけじゃ、エクセルのマクロが実行されないのかも printf デバッグで、どこまで動いているか確かめるべき! エクセルのマクロの、Outlook の起動コードの前後で、何かを出力すれば? Outlook の起動前に、端末・ファイルへ出力する Outlook の起動コード Outlook の起動後に、端末・ファイルへ出力する
511 名前:デフォルトの名無しさん [2022/09/06(火) 20:05:52.59 ID:D5ckGmEva.net] 動作が止まるのは終了したからかもよ
512 名前:490 (ワッチョイ bf66-bBdM) [[ここ壊れてます] .net] >>505 なるほど。そういう方もおられるのですね。 EXCEL VBAのプロシージャはあんまり長くしない方がいいよみたいなサイト読んで影響受けてます。 コードの書き方って結構こだわりを持っている方がいるようで、自分はそれに影響を受けやすい方です。 自分もこだわりたい方なんだと思います。 EXCEL VBAを知って、宣言は直前が基本ですよみたいな記事読んで強く影響受けました。 だから使い終わるごとに未定義に出来れば毎度宣言しなおせるからすっきりするのになぁみたいな気持ちでした。 EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。
513 名前:デフォルトの名無しさん (ワッチョイ 47ac-DXwO) mailto:sage [[ここ壊れてます] .net] ちゃんとfunction分けてたら直前でいいけど、 大抵クソデカ関数ひとつか、グローバル宣言祭りだろうからなあ
514 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 20:37:51.18 ID:z3X/Y8zI0.net] >>512 > EXCEL VBAとしてはfor やfor eachに使うような変数は先頭宣言にしてやっていこうと思います。 とりあえずそれで動くところまで持って行ってコードが固まったらこだわりのコードスタイルにリファクタリングすればいいかと
515 名前:デフォルトの名無しさん [2022/09/06(火) 21:28:56.11 ID:3UeoLADl0.net] >>512 >他の言語だとあるのであるかなと思ったのです。 他の言語って具体的に何? 答えられない?逃げる?それともまた言い訳?
516 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 21:54:35.94 ID:iobTnTaB0.net] >>512 個人的に、VBAに限定した話で宣言は直前とかいう記事はあんまり信用できないと思ってる 最近の言語ならそれで良いんだけどね
517 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 22:58:52.94 ID:z3X/Y8zI0.net] >>515 >>509 煽るならもうちょい知識をつけてからにした方がいい
518 名前:デフォルトの名無しさん mailto:sage [2022/09/06(火) 23:05:26.43 ID:NuTb9qxy0.net] あまり複雑化しても辛くなるしな シンプルにシンプルによ
519 名前:デフォルトの名無しさん [2022/09/07(水) 07:28:44.73 ID:TmSq6TyA0.net] >>516 どういうこと? 最近の言語と違って ・ブロックスコープがない ・宣言と同時に代入できない 以上VBAの特徴2点を差し引いたとしても、 先頭宣言が直前宣言より優れている所なんかひとつもないと思うんだが
520 名前:デフォルトの名無しさん [2022/09/07(水) 09:01:28.19 ID:l5y/t4MDM.net] 個人的信条を議論するのは無意味
521 名前:デフォルトの名無しさん (アウアウクー MMbb-2Jzk) mailto:sage [[ここ壊れてます] .net] 変数はImmutableにするのが最近の言語でしょ こうなるもうどこで宣言しようが関係ない
522 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:33:33.73 ID:nObPwJJb0.net] >>519 まあ>>520 に同意しつつ、一番の理由は、 VBAでの一般的なスタイルに反するからなんだが ブロックスコープがないのに直前で変数宣言するのは、 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが むしろ直前宣言が優れている点ってどこだよ?
523 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:40:46.55 ID:qgePcMk7a.net] >>519 同意する まあ>>516 は理由を書いてない時点であまり信用できないと思ってる
524 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:45:10.64 ID:qgePcMk7a.net] >>522 > 違うブロックで宣言された変数と宣言が被るリスクが上がるだけなんだが そんなものどこで宣言しても同じだろ > むしろ直前宣言が優れている点ってどこだよ? コードを追う時に見える範囲に宣言あれば型とかも分かるだろ
525 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:47:45.63 ID:URQHgzNh0.net] >>522 ・別functionにしない ・設計が出来ない ・順番がコロコロ変わる こういう場合は直前の宣言がいいんだろうな
526 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 19:48:48.00 ID:ie60y+bR0.net] インデックスとはいえ変数を使い回すのはNGなのです! VBAだとしても許されません!ロボコン0点
527 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:14:29.57 ID:lr2lUZXda.net] 質問でもなく他人のコードの変数をどこに書こうがどうでもいいのに書き方に熱くなる人はバカなんだろうね まあそういう技術的な部分に関係ないところしか語れない程度が集まるスレなんだろうけどw
528 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:36:38.49 ID:pBpkzzj3a.net] >>527 そんなに熱くなるなよw
529 名前:デフォルトの名無しさん (スッップ Sd7f-VPUc) [[ここ壊れてます] .net] >>517 で、答えられずに逃げたのかよ
530 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 20:55:49.52 ID:qYDBMpOU0.net] >>529 マジでアホなの? PowerShellって書いてあるだろw
531 名前:デフォルトの名無しさん [2022/09/07(水) 21:25:08.49 ID:dOhAzb3IM.net] >>530 へー、shellコマンドと言語の違いがわからない人か 納得
532 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 21:50:42.41 ID:qYDBMpOU0.net] >>531 PowerShellって結構リッチなプログラム言語ですけど? 頭大丈夫?
533 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 22:25:03.60 ID:GXE70sRqM.net] シェルとシェルスクリプトは間違えてませんですわー
534 名前:デフォルトの名無しさん [2022/09/07(水) 22:55:46.20 ID:N0bzWtYO0.net] >>524 そうね。ブロックスコープは確かに便利。 ただ、匙加減の問題にもなるけど ブロックスコープに慣れるとついつい 単一責任原則の考え方がおざなりになりがちで 密結合なものを作ってしまい易くなる。 なので、あくまで俺はだけど EXCELのVBAに関してはメソッドや関数の 頭に変数定義を行うようにしている。 それでコードが読み辛くなるようであれば その時点でリファクタリングの対象になるという考え。
535 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:29:34.28 ID:N0PmJDO50.net] でも誰も読まないんだよなー
536 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:46:23.08 ID:QgSPv1dJ0.net] ここの回答者は上級者なんだからVBAの事端から端まで知っていると思っていたんですけど?? なんでこんなに荒れているのですか?
537 名前:デフォルトの名無しさん mailto:sage [2022/09/07(水) 23:51:19.61 ID:oCHm3LOdM.net] VBAで単一責任て そもそも表計算ソフトで画面やDBモドキ作ってる時点でおかしいと思わないのか
538 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 00:18:03.89 ID:GEpvz+Yp0.net] 知識と人間性には何も関係がないからじゃね
539 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:29:45.47 ID:ih3U5PTX0.net] だって回答者に回れるって事は知り尽くしてるって事なんでしょ? ちょっと詳しいだけじゃ回答できるはずないもんね?
540 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 01:40:01.52 ID:eb3KVsRH0.net] >>539 ソースは? 誰の発言?
541 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 04:43:57.30 ID:dSUuwrfW0.net] >>534 なので、の前後の関係がよくわからん > EXCELのVBAに関してはメソッドや関数の頭に変数定義を行うようにしている。 それこそ余計蜜結合になるかと
542 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:11:23.79 ID:vw1M88UR0.net] 誰が上級者と認定したん? ここのカキコに資格試験なんかあるかいな・・・ 回答が使えるかどうか、正しいかどうかが全てじゃ。
543 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:33:16.02 ID:13BgqVgC0.net] どこで宣言するか問題って、画面上部をスクロールせず固定出来るようになれば解決するんだろうな。 エクセルは出来るんだから、VBAの画面も出来るようにして欲しいものだ。
544 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 06:54:06.36 ID:9KZ4CtoQa.net] >>543 VBEは昔ながらのUIなので垂直スクロールバーの上部を下にドラッグすると同一オブジェクトコードの水平分割表示ができるけれど
545 名前:デフォルトの名無しさん [2022/09/08(木) 08:07:26.88 ID:YfOXyicz0.net] >>541 分かり辛かったかな? 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。 そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、 それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。