- 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
- 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
分かり辛かったかな? 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。 そもそもひとつの関数やメソッドにはひとつの役割だけ持たせるべきで、そうした場合、変数が何に使ってるか分からないくらい長くなること自体あまりないし、 それで長くなるようであればそもそもの作りがおかしいのでリファクタリングの対象とする、ってことなんだけどね。
- 546 名前:デフォルトの名無しさん (アウアウウー Sa8b-Ro21) [[ここ壊れてます] .net]
- VB/VBA/ExcelもAccessもOfficeごと窓からポイッ
- 547 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 10:06:01.26 ID:dSUuwrfW0.net]
- >>545
> 平たく言うと変数が何に使っているか分かり辛くなるような長いコードをひとつの関数やメソッドに書くなということ。 それ変数の宣言位置とは違う話だろ まあ先頭に変数宣言するメリットを説明できないならいいや、バイバイ
- 548 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
- >>547
なんで? どうせ同じ関数内で同じ名称の変数なんて作れないんだから 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。 使ってる変数名を再宣言しようとして「あ」となることもないし、 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。
- 549 名前:デフォルトの名無しさん (ワッチョイ 5f4f-ozIc) [[ここ壊れてます] .net]
- ま、そもそもそんなこと気にするくらい長いコード書いちゃいけないんだけどね。
そちらのレベルに合わせて話してもそれだけのメリットはあるよ。
- 550 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:19:53.66 ID:E2yDW5TJ0.net]
- Wordがどうしようもなく使いにくいので、
Excel VBAで代わりのツールを作りたいと思います。 こんな考え方は邪道でしょうか?
- 551 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 13:50:27.43 ID:N6XG++JQ0.net]
- WordVBAを何故つかわない?
マウロ記録がないOutlookVBAやPowerpointVBAなら一瞬気持ちがわかるが
- 552 名前:デフォルトの名無しさん [2022/09/08(木) 14:17:07.18 ID:Sm7a3fWy0.net]
- loopのカウンタを使用後に消さないと
順番入れ替えたらバグるとか気にする初心者にはvba向いてないと思う
- 553 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 16:06:28.64 ID:e4Jhfn6X0.net]
- ワードにできることはエクセルでほぼ出来るからワードの使いかた忘れてしもた
しかし困ったことはない
- 554 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 17:02:48.44 ID:dSUuwrfW0.net]
- >>548
> 全部纏めて同じ位置にあった方が「この変数はこのシチュエーションのときにこう言った意味で使う」とか命名し易いじゃん。 コボル臭が... w まあ使ってる近くにあれば宣言なども簡単に確認できるメリットより命名のメリットを重視する人もいるんだね > 使ってる変数名を再宣言しようとして「あ」となる んだから > 同じ変数をバカみたいに使い回して本当は値変えると不味かったのに変えちゃったりとかアホなことも減るよ。 なんてなるわけないと思うけど?
- 555 名前:デフォルトの名無しさん mailto:sage [2022/09/08(木) 19:47:18.35 ID:wUuMBq/Ad.net]
- Excel → Markdown → Word アウトライン変換のマクロを作れば大分マトモになる予感
Excelの列で見出しを識別する感じで
- 556 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:50:29.07 ID:yQKHhevv0.net]
- intersect( activecell.ListObject.HeaderRowRange,activecell.EntireColumn).Address
テーブル上にアクティブセルがあり、そのセルの列ラベルのアドレスを調べたく こんなのを書いたのですが、もっと他にイケてる書き方はないでしょうか
|

|