1 名前:デフォルトの名無しさん mailto:sage [2021/07/18(日) 08:42:15.37 ID:KskL7bEXd.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付けるナリ ExcelのVBAに関する質問スレナリ コード書き込みや作成依頼もOKナリ ※前スレ Excel VBA 質問スレ Part70 https://mevius.5ch.net/test/read.cgi/tech/1616072923/ Excel VBA 質問スレ Part71 https://mevius.5ch.net/test/read.cgi/tech/1621914481/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
892 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 16:25:02.09 ID:XlNVU0UMH.net] 処理する範囲をわかりやすくしてみた Sub PrintOut() Dim a For Each c In Range("D1:H1") 'DからHまで a = c.Resize(4, 1) '縦4行 Range("A1").Resize(4, 1) = a ActiveWindow.SelectedSheets.PrintOut Next End Sub
893 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 16:25:12.58 ID:W4cHTvUwd.net] すげー!凄い短くなってる! ありがとうございます。 後で試してみます。 まだVBA初めて間もないのですが、しっかり勉行すれば、 繰り返し作業簡素化の可能性を非常に感じました。 ありがとうございました。
894 名前:デフォルトの名無しさん [2021/09/08(水) 16:48:49.57 ID:q+ZxDcv00.net] またいつものあいつに引っ掛かる馬鹿ども
895 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 17:49:01.52 ID:I0eTwbNOM.net] って言いたいだけの自尊心の擬人化さん
896 名前:デフォルトの名無しさん [2021/09/08(水) 18:05:21.93 ID:ehctv71ga.net] ねぇねぇワクチンが足りないとか余って捨ててるとかなんなの? Excelでさえ1億2千万人のデータぐらい余裕で作れるんじゃないの?
897 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 18:33:49.98 ID:lGj0x8DT0.net] with派は?
898 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 18:39:36.93 ID:wkgfp7fUa.net] Excelの印象派はちょっと困るねぇ セル結合じゃなくてシェイプでやってよ
899 名前:デフォルトの名無しさん mailto:sage [2021/09/08(水) 19:58:14.37 ID:y8J9pOw20.net] Excelではどうにも出来ないたぐいのヒューマンエラーが多いからな
900 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 09:38:25.14 ID:foh10V2pM.net] たとえば5000行もある住所録(一人一行使う)で、左端(つまりA列)にチェックボックスをつけるって出来ます? 5000個もチェックボックスオブジェクトを作るって現実にやってる方います?これは現実的でしょうか? 今考えてるのはA列に正方形(□)とレ点付きの□の二択プルダウンを用意することなんだけど、 それだとマウスのダブルクリックで表示を切り替えることは出来なくなる。 良い方法ありますか?
901 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 09:59:04.73 ID:4tB32NIbH.net] >>895 チェックボックスを5000個作るぐらい簡単だが? けど、そういう一覧表を作る意味がないだろ 5000件も手作業でチェックなんか入れてたら絶対にミスが起きるし 次の作業のことまで考えて表を作れよ
902 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:11:27.57 ID:zJmTPnJXM.net] >>895 チェックボックスみたいなテキストでやる
903 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:12:10.09 ID:FIynLA9Dd.net] >>896 自分も同じことを思ったけど解決策にならないレスはせずに放置がいいと思う 理解していけばしていくほどやれることを絞って考えていくようになるかと
904 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:25:59.17 ID:4jr1qQtOd.net] 参考 チェックボックスの絵文字 使用は推奨しない ☑ ✅
905 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:27:08.70 ID:2Kg/wmz7M.net] >>895 ダブルクリックかライトクリックイベントで背景色変えるとかなんか印を付けるとかした方が楽そう
906 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:32:22.27 ID:IpCo+OYQ0.net] >>895 普通にその方法でいいじゃんと思うけど、ダブルクリック必須なの? チェックボックスの操作ならせめてシングルクリックだと思うけど。 マウス必須ならA列にハイパーリンクを仕込んでおいて、イベント ハンドラの中でどこが押されたかを判断して状態を反転させるという 方法もある。 ただこの場合A列は自由に入力可能なのでシートの保護を掛けることに なると思うし、どの部分をどこまで編集可能とするかということとの 兼ね合いになると思う。
907 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:42:39.73 ID:9k5sY4oP0.net] >>895 あなたの言ってることはダブルクリックとかチェックボックスとプルダウンとか意味不明なんだけど、やりたいことさえはっきりしてなら VBA でオブジェクトの追加コマンドを追加場所を1行から5000行まで変えながら回せばいい。
908 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:48:23.02 ID:4tB32NIbH.net] >>902 セルをコピペすればセルに乗ってるオブジェクトも一緒にコピペされる だからチェックボックスを5000個に増やすだけなら数クリックの手間だけで終わる ブックが重くなるけどな
909 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:50:53.75 ID:foh10V2pM.net] シングルクリックと間違えてました。 自動的に5000個作ると30分待っても終わらないので、ダメなのだと思ってました
910 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 10:53:21.37 ID:foh10V2pM.net] >>897 >>896 チェックを入れた行だけ特定の書式にしてファイルとして出力する用途なので、そこは気にしないのです
911 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 11:01:26.77 ID:4tB32NIbH.net] 試しにやってみたけど、チェックボックス5000個コピペだけなら20秒ぐらいで終わったぞ https://i.imgur.com/4Bo9Yvp.png
912 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 11:03:58.28 ID:foh10V2pM.net] >>906 1000個なら一分待てば出来ました。 しかしその後の操作がめちゃくちゃ重くなるのでこうした使い方は一般的ではないのかな、という疑問がありました
913 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 11:07:12.46 ID:foh10V2pM.net] >>897 おさわがせしました。 1000個作って、特定行を一行削除するだけでもとても完了に時間がかかるので、 この方の方法でしのぎます
914 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 11:21:19.40 ID:37zPgm1s0.net] >>907 ちなみにどんなふうに削除してる?
915 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 14:10:09.39 ID:m7/bNtYYa.net] クラスモジュールの引数に可変長引数を渡したくて、呼び出し側でその引数に変数をぶち込んで渡したいんだけど、これってやっぱりできないの?
916 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 19:38:24.58 ID:7gPjCFSp0.net] >>895 sheetモジュールに記述 ※ただ、選択済みのセルをクリックしてon/offができない Private Sub Worksheet_SelectionChange(ByVal Target As Range) d = WorksheetFunction.Unicode(Cells(1, 1).Value) Debug.Print (d) ' 38960 If Target.Column = 1 Then Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@" If Target.Value = 0 Then Target.Value = -1 Target.Value = Target.Value * -1 End If End Sub
917 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 19:39:38.73 ID:7gPjCFSp0.net] デバッグ残ってたわ。こっちで Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'A列のみ If Target.Column = 1 Then '書式設定を設定 Target.NumberFormatLocal = WorksheetFunction.Unichar(10004) & ";□;0;@" '-1かけて反転させる If Target.Value = 0 Then Target.Value = -1 Target.Value = Target.Value * -1 End If End Sub
918 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 19:55:23.82 ID:zfiF925t0.net] 関連スレ建てたよ VBAなんでも質問スレ Part3 https://mevius.5ch.net/test/read.cgi/tech/1631184381/
919 名前:デフォルトの名無しさん mailto:sage [2021/09/09(木) 23:48:42.23 ID:ULMewu8MM.net] >>910 delimiterで値を連結して一つの文字列にして渡し それを受け取った側で処理するとかw
920 名前:910 mailto:sage [2021/09/10(金) 00:39:56.77 ID:Ovs2Qwn/0.net] >>914 なるほど 無理やりすぎて草
921 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 00:57:16.66 ID:cGWG4Dd90.net] >>910 ちょっとなに言ってるかわかんないけど ParamArray とかそういうこと?
922 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 01:37:01.01 ID:k/ICsAd30.net] >>910 恰好つけて内容端折ったり、初心者に有りがちなオレオレ用語使ってるせいで意味不明 ちゃんと質問したら回答や代案出してくれる人いると思うよ
923 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 06:29:18.76 ID:SjJWgB1Wd.net] エスパーしてみるとオーバーロードしたいってこと?
924 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 07:09:26.44 ID:LHgBQKs+0.net] >>910 てParamArrayでいいじゃん(いいじゃん)
925 名前:910 mailto:sage [2021/09/10(金) 12:04:43.32 ID:9zsJDEjAa.net] 言葉足らずで申し訳ない ・クラスモジュールでtestSubを作る ・testSubには引数として複数の文字列(パス)を入れたいが、場合によってはいれる数が変わるので可変長引数として渡したい→paramArrayを使った ・標準モジュールでtestSubを呼び出すときに引数に文字列直打ちで入力→これは呼び出せた 例 class.testSub(“a”, “b”, ”c”) →OK ・一方で引数に参照渡し?で変数を入れることができなかった 例 Dim a as string:a = “a” Dim b as string:a = “b” Dim c as string:a = “c” class.testSub(a, b, c) →エラー まとめ:参照渡し+可変長引数を実現する方法はありますか?という質問です
926 名前:デフォルトの名無しさん [2021/09/10(金) 12:33:58.83 ID:LPBZaVhNM.net] へー、どんなエラーメッセージが出るんだい?
927 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 12:41:02.44 ID:s5UDpNf0d.net] bとcに代入されてないように見えるんだけど…
928 名前:910 mailto:sage [2021/09/10(金) 12:44:45.11 ID:9zsJDEjAa.net] >>922 誤字りました >例 >Dim a as string:a = “a” >Dim b as string:b = “b” >Dim c as string:c = “c” > >class.testSub(a, b, c) →エラー
929 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 12:44:47.75 ID:Wgizc1rOd.net] paramarrayは使ったことないからなんでエラーになるか知らないけど optional byrefをいっぱい作れば解決か?
930 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 12:57:26.48 ID:3anmc9lr0.net] うちではエラーにならないので、ParamArray以外のところで何か起きていると思う
931 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 13:42:46.46 ID:cGWG4Dd90.net] とりあえずエラーメッセージぐらい書け Call class.testSub(a, b, c) とかいうオチじゃないだろうな
932 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 13:48:25.18 ID:cGWG4Dd90.net] あと言っとくけど、参照型と参照渡しはちがうからな その例でいくなら(受け取り側で何やりたいかによるが)参照渡しである必要性なんてないんじゃね
933 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 15:05:47.68 ID:bX+CqFZ4r.net] vbaの配列って絶対要素数がわかってないとだめなの? 他の言語のリストみたいにあとから追加とか削除したいんだけど
934 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 15:09:49.67 ID:kF1ZwEU6a.net] >>928 一々ReDimしなきゃならん それは嫌って人のためにCollectionがある
935 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 15:16:50.98 ID:tlapevkG0.net] 二次元配列以外はコレクションでいいよな
936 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 15:22:02.18 ID:kF1ZwEU6a.net] Dictionaryも好きだけどね 用途によるね
937 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 15:47:18.98 ID:bX+CqFZ4r.net] >>929 まじかよ メモリ確保の問題かな? これは大きな弱点やな
938 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:10:25.64 ID:bX+CqFZ4r.net] 配列が可変だったら終わる作業が全く終わらん マジでいらつくわ
939 名前:デフォルトの名無しさん [2021/09/10(金) 16:26:30.74 ID:rHUFiRNt0.net] >>886>>887 コンパイルエラー 変数が定義されていません とか出たのですが・・・。 c のトコがハイライトされています。
940 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:31:21.74 ID:8Iwa8KgHa.net] >>934 変数が定義されてないなら定義すればいい
941 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:31:29.22 ID:2Fxd4w670.net] Set range = ActiveSheet.Range("J10") debug.print range.Cells(0, 0).address この出力がI9になります J10を期待したのですがどういう事ですか?
942 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:36:53.08 ID:8Iwa8KgHa.net] >>936 ActiveSheet.Cells(1,1).AddressはA1になるでしょ? んで、ActiveSheet.Cells(0,0).Addressはオブジェクト定義エラーになるでしょ つまり、ワークシートの起点はA1であり、Cells(1,1)なわけ だから、それから今回の事象は推察できるでしょ 余談だけどその変数名は絶対にやめた方がいい VBAには既にRangeって単語があるんだから
943 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:41:57.41 ID:8Iwa8KgHa.net] >>936 追記 あなたの考えどおりに動く、offsetって関数があるからそっち使ったらいいんじゃないかな
944 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:42:03.28 ID:tlapevkG0.net] >>936 1,1にすればなるだろ 0だから行列がそれぞれマイナス1されてるんじゃね? 0入れたことないから予想だけど
945 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:52:02.92 ID:2Fxd4w670.net] >>937-938 Cellsの引数はそのまま1つ目2つ目と考える事にします 変数名は質問用に適当にしましたすみません offsetが距離1つ先2つ先なのでこちらを使用しようと思います ありがとうございました >>939 1,1にすればなりますが論点はそこではありません
946 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 16:54:59.11 ID:tlapevkG0.net] 0から始まる配列なんかを入れたいという感じか
947 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 17:05:41.13 ID:cGWG4Dd90.net] >>934 変数が全角と半角混在してんじゃね つかコードそのまま張れよ
948 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 17:13:14.83 ID:8Iwa8KgHa.net] >>942 cの宣言してないだけ
949 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 17:47:04.78 ID:k/ICsAd30.net] >>920 下に書いたようにParamArrayを使ったメソッドが定義されたクラスモジュールを作って、 それに宣言した変数を渡してみたけどエラーは起きないよ。 後、「参照渡し」で有る事を気にしてるけど、ParamArrayが指定された引数は参照渡しになる。 例えばtestSub内でargs(0)に適当な値を割り当てると、呼び出し元のcaller関数のaの値も変わる。 クラスモジュール(class.cls) Public Sub testSub(ParamArray args()) Dim arg For Each arg In args If VarType(arg) = vbString Then Debug.Print arg; Next End Sub 標準モジュール Sub caller() Dim a As String: a = "a" Dim b As String: b = "b" Dim c As String: c = "c" Dim Class As New Class Class.testSub a, b, c 'イミディエイトウインドウ: abc End Sub だからこっちが質問内容を取り違えてるんだと思うんだけど、どこが違う? それとエラーメッセージを教えて欲しい もし意味が分かるならコンパイルエラーか実行時エラーかも知りたい
950 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 18:37:19.42 ID:k/ICsAd30.net] >>934 Columnsで列ごとに取り出す方法で短く、分かりやすくしてみた Sub PrintOut() Dim Column As Range For Each Column In Range("D1:H4").Columns '指定範囲を一列ごと取り出す Range("A1:A4").Value = Column.Value '取り出した一列の値をA1:A4に張り付ける ActiveWindow.SelectedSheets.PrintOut Next End Sub ちなみにこういうのはActive***とセル番号指定じゃなくて、 シートモジュールとテーブル使った方がメンテしやすくなる。 A1:A4とD1:H4にそれぞれテーブルを作成(セルを選択して「ホーム」リボンの「テーブルとして書式設定」)し、 A1:A4のテーブル名を「コピー先」、D1:H4のテーブル名を「コピー元一覧」にする。 そのシートのシートモジュールに次の様なメソッドを定義する Sub MyPrintOut() Dim Column As ListColumn For Each Column In ListObjects("コピー元一覧").ListColumns ListObjects("コピー先").Value = Column.DataBodyRange.Value ActiveWindow.SelectedSheets.PrintOut Next End Sub やってることは一緒だけど、 ・コピペする(される)セルの番地が変わっても動く ・D1:H4の範囲が増えてもテーブルを範囲を変更するだけで動く ・「コピー元一覧」から「コピー先」に張り付けてるのがソースを見ただけで分かる とメリットだらけ
951 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 21:16:37.69 ID:cbJJzriEM.net] >>937 > 余談だけどその変数名は絶対にやめた方がいい > VBAには既にRangeって単語があるんだから なぜ? VBAは型の名前空間と変数等の名前空間違うから問題なく動くぞ
952 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 21:38:37.34 ID:2Fxd4w670.net] >>946 そういう問題じゃないんですよ
953 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 21:40:05.19 ID:TT1mfVcaM.net] >>947 だからどういう問題かを書けないなら黙ってなよ
954 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 21:43:02.76 ID:2Fxd4w670.net] >>948 動くかどうかという話ではないので論点はそこではありません
955 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:07:47.67 ID:rk4qX9ha0.net] 動かすだけならグローバルに配列つくればいいわな
956 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:16:10.75 ID:cbJJzriEM.net] >>949 ああ説明できないのかしたくないのかは知らんけどそういうことしか書けないのな まあ君はそれでいいと思うよw
957 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:19:16.50 ID:rrgK5Yqx0.net] >>951 可読性の面もあるし、変数名の意味付けの面もあるだろう Rangeって書かれても、どんな目的で何のRangeを変数に入れたのかが分かるように書くのが綺麗なコード 知らんけど
958 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:20:43.81 ID:oDrMz70O0.net] 難癖つけててワロタ
959 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:37:14.80 ID:sbKq7iyBM.net] >>952 > Rangeって書かれても、どんな目的で何のRangeを変数に入れたのかが分かるように書くのが綺麗なコード 例えば指定された範囲にいくつかの装飾を適用する Private Sub 装飾(Range As Range) With Range ... End With End Sub 君なら引数の名前をどうする?
960 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 22:56:49.10 ID:rrgK5Yqx0.net] Excelの装飾ってのがよくわからんけど、書式のこと? 関数っぽい書き方してるからこんなんでいいんじゃないの Private Sub SetFormat_to_TargetRange(ByVal TargetRange As Range) With TargetRange ... End With End Sub
961 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 23:04:12.45 ID:k/ICsAd30.net] 文脈的に明らかならRange As Rangeいいと思うけどね。 あと、「Rangeオブジェクト」である以上の情報がない変数や引数に対して無理やり名づけようとしても、 結局TargetRange的な抽象的な名前になっちゃう事もある。
962 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 23:06:14.39 ID:k/ICsAd30.net] >>955 流石にそれは冗長すぎて逆に読みにくいだろ・・・
963 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 23:11:20.56 ID:LHgBQKs+0.net] >>954 そこはtarget as rangeでいいと思う 一番読みやすい 自分しか使わない場合でもrange as rangeは使わないかな vbaの場合、引数なしの関数と変数って見分けが付きにくい ってかなんだこれエラーになるぞ Sub foo() Dim Calculate As Long Calculate End Sub これはエラーにならない Sub foo() Dim Calculate As Long End Sub これもエラーにならない Sub foo() Calculate End Sub 変数名と関数名がかぶると変数が優先される? まぁ何にしろ、こんな事は避けたいから俺はかぶらないようにするけどね
964 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 23:15:36.34 ID:rrgK5Yqx0.net] 多少長くても要素要素は省いちゃメンテが大変になるから多少冗長でも構わないスタンスで 単語の簡素化はしてもいいなら関数名をSetFmt_TgtRngとかにするかもね あとそもそも、挙げられた例は不適切では? 今回話題になってるのは呼び出し先の(汎用的に使える)関数での変数名ではなくて、呼び出し元での変数名かと
965 名前:デフォルトの名無しさん mailto:sage [2021/09/10(金) 23:25:05.99 ID:k/ICsAd30.net] >>958 再定義(シャドーイング)されてるだけ。 親スコープから継承されてる宣言名(今回で言えばオブジェクト名.Calculate)を再定義すると、定義が上書きされる。 Calculateは整数として再定義されたので、そのスコープではCalculateだけなら暗黙的に整数になる。 明示的に「オブジェクト名.Calculate」とすればメソッドとしてのCalculateを使用できる
966 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 00:00:09.96 ID:qqZDVqkP0.net] personal.xlsbを複数の端末で共有したいので共有フォルダーにおいています. XLSTARTのpersonal.xlsbは削除して共有フォルダーのpersonal.xlsbへのショートカットをおいています. エクセルが起動するときにpersonal.xlsbを開くかどうか毎回聞いてきます (セキュリティのマクロの設定は「警告を表示して全てのマクロを無効にする」です) 毎回開くを押すのが面倒なので共有フォルダーのpersonal.xlsbだけ常時開くような設定はできないでしょうか?
967 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 07:08:07.40 ID:M0KgNEQw0.net] >>960 ありがとうございます こんな機能あったのか、名前被るとエラーになると思って避けてたわ
968 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 08:32:29.27 ID:uUbGGWZvM.net] >>962 スコープを持った言語ではたいてい内側のスコープが優先されるよ 中にはあえてエラーにする言語もあるけど https://docs.microsoft.com/ja-jp/dotnet/csharp/misc/cs0136
969 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 09:37:25.87 ID:3jGknNChp.net] >>955 関数の大きさにもよるな 小さくてすぐ上に引数設定して 型が見えてるようなのはvalueでいいと思う 少しごちゃごちゃして見辛いのは targetRangeでいいと思うし 更にもう少し大きくなって業務的な 意味を持つようになったらその名前付ければ いいんじゃないかな
970 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 10:18:08.93 ID:JYcIgh+V0.net] >>936 です 質問用に最少構成にする時点でもう少し変数名に気を付けるべきでした 変な流れになってすみません
971 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 10:49:48.68 ID:eXg+YAmHM.net] >>964 Valueはないわ…
972 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 12:17:24.93 ID:qqZDVqkP0.net] >>966 そうだよな。value指定ではフォーマット変更は無理だよな
973 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 13:14:28.26 ID:GnKWsobMa.net] Valueだけはねぇわ targetとtmpとi・j・kとrくらいしか意味の薄い変数は使わないようにしないと
974 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 13:57:33.58 ID:SrjYrNmNM.net] m,nも
975 名前:デフォルトの名無しさん mailto:sage [2021/09/11(土) 14:37:20.09 ID:M0KgNEQw0.net] i・j・k 顔文字かと思った
976 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 11:12:03.90 ID:up1UF/mUp.net] valueがダメだと言ってる奴は恐らくプロパティとか プロパティの使えない他言語とか使ったことのない井の中の蛙という奴だな VBAしかやってないジジイにはよくあること
977 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 11:42:37.67 ID:igJhGb/40.net] >>971 君、韓国人?
978 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 11:48:24.82 ID:3Dv8YdNb0.net] 韓国をばかにするな!ITに関しては日本より進んでいるぞ
979 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 12:10:04.57 ID:tsfiI8be0.net] どこ見て言ってんだか
980 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 12:15:32.69 ID:3Dv8YdNb0.net] ここ見ててんだよ
981 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 12:55:49.25 ID:xXC+mfefM.net] >>971 またチンケなマウント取りが来たなw >>954 の引数としてValueはないわって話 値としての用途ならValueもよく使うよ
982 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 13:36:49.25 ID:5xdi3uAF0.net] オブジェクト型のRange型なのに、Valueを変数名にするのはVBAの常識的にNGなのは自明
983 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 14:09:17.30 ID:3Dv8YdNb0.net] >>977 > Valueを変数名にする 変数名の適否ではなくって、ByValで値引き渡しにしたらもとの範囲のフォーマットを変更できないという話じゃないのか?
984 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 16:11:41.17 ID:INS7ikYU0.net] >>978 今問題にしてたのは変数(引数)名であって引数の渡し方ではないのだが 参照型と参照渡しとちゃんと区別して理解してる?
985 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 16:21:24.92 ID:aVK/EU7g0.net] 元の元は>>936 (私)でdim range as rangeに対してsetしたのですが 引数としてrange as rangeとされている状態でsetする事なんてあるのですか? 普通は無いなら途中から引数の話になるのもずれてません?
986 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 16:31:54.19 ID:pHewVqE+0.net] そう言えばデコレーターパターンとかでは valueはよく見るけどreferって見ないよね なんでだろ?
987 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 16:37:26.61 ID:3Dv8YdNb0.net] >>979 955の話じゃないのか? 誤解してたらすまん。
988 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 18:56:51.30 ID:up1UF/mUp.net] >>981 それは引数が何かの値という意味で プログラム的な参照とか値とかは関係ないからさ
989 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 19:28:40.93 ID:qUARoTjRM.net] >>980 お前さんの普通がわからんけど、複数のレンジを返したいならそういうケースもあると思うよ そもそも>>952 は名前付けの話でSet云々の話に限定はしてないと思うし
990 名前:デフォルトの名無しさん [2021/09/12(日) 21:17:53.40 ID:K6Dv6PKH0.net] ttps://whois.nic.ad.jp/cgi-bin/whois_gw?key=182.22.16.251&codecheck-sjis=%E3%81%AB%E3%81%BB%E3%82%93%E3%81%AD%E3%81%A3%E3%81%A8%E3%82%8F%E3%83%BC%E3%81%8F%E3%81%84%E3%82%93%E3%81%B5%E3%81%89%E3%82%81%E3%83%BC%E3%81%97%E3%82%87%E3%82%93%E3%81%9B%E3%82%93%E3%81%9F%E3%83%BC&submit= に表示されているネットワーク名「YAHOO-NET」を取得しようとしているのですが、 Cells(1, 2) = objIE.Document.getElementsByTagName("pre").innerText ではメソッドがサポートされいないとエラー表示されます。 何がいけないのでしょうか?
991 名前:名無し募集中。。。 mailto:sage [2021/09/12(日) 21:29:23.70 ID:Nc1wnmSN0.net] 普段使ってないから問題点がこれ意外にもあるかわからないが Cells(1, 2) = objIE.Document.getElementsByTagName("pre")(1).innerText これでどう?
992 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 21:29:29.14 ID:wxf2x8Lb0.net] VBAとJavaScriptが、混ざっちゃった感じかな
993 名前:デフォルトの名無しさん [2021/09/12(日) 22:10:03.90 ID:UcZJH98c0.net] n時間後にエンターキーを押すプログラムってどう作るんだ?初心者にもわかりやすく誰か教えて
994 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 22:16:01.50 ID:wxf2x8Lb0.net] 「n時間後にアラームを設定して、鳴ったらENTERを押せ!」 と、命令する
995 名前:デフォルトの名無しさん [2021/09/12(日) 22:27:13.14 ID:K6Dv6PKH0.net] >>986 ありがとうございます。 「オブジェクト変数がセットされていません」というエラーメッセージが出ており、検証はできておりませんが、いけそうな気がします。 ページ遷移したらobjIE.Documentに遷移先の情報が自動で設定されないのかもしれません。
996 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 22:28:25.73 ID:8PbYCWHKH.net] >>988 基本はこうだけど、このままだとタイマーを仕掛けたのを忘れてて、ほかの作業をしてる時に急にEnterが押されてびっくりすると思うよ Sub n時間後にEnterを押す() n = 1 'n時間を指定 n時間後 = Now + TimeValue(n & ":00:00") 'n時間後が何時何分か計算する Do DoEvents Loop Until Now >= n時間後 'n時間誤まで待つ SendKeys "~" 'Enterを押す End Sub
997 名前:デフォルトの名無しさん mailto:sage [2021/09/12(日) 23:27:46.85 ID:Nc1wnmSN0.net] >>990 (1)じゃなかった (0)だった
998 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 01:05:28.69 ID:gLuGYsXi0.net] >>991 せめてOnTime使えよ
999 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 01:09:51.01 ID:DeEefxbAd.net] OnTimeはあとからタイマーの設定を確認したり停始する方法がないから使い勝手が悪すぎるのがなあ
1000 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 01:34:41.43 ID:/cjB8lcQM.net] 配列に保存しとくか シートに書き出しておく それを元に確認したりキャンセルする
1001 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 02:28:08.29 ID:SNtxNYpLd.net] >>990 URLはここまででいいんだよ https://whois.nic.ad.jp/cgi-bin/whois_gw?key=182.22.16.251
1002 名前:デフォルトの名無しさん [2021/09/13(月) 07:15:43.89 ID:oNrWMPyP0.net] >>992 , 996 ありがとうございます!
1003 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 07:30:13.42 ID:GNx0xRRz0.net] つぎ https://mevius.5ch.net/test/read.cgi/tech/1631485799/l50
1004 名前:デフォルトの名無しさん mailto:sage [2021/09/13(月) 07:41:47.37 ID:KCvhkZmap.net] >>998 うむ、ご苦労
1005 名前:デフォルトの名無しさん [2021/09/13(月) 09:30:38.14 ID:Kz73eSbEF.net] 1000ならコロナ収束
1006 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 57日 0時間 48分 23秒
1007 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています