[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 17:31 / Filesize : 282 KB / Number-of Response : 1019
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part75



1 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:24:32.62 ID:I0u44nFvd.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part74
https://mevius.5ch.net/test/read.cgi/tech/1639932059/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

686 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:32:15.47 ID:/IcSX3Pk0.net]
>>644
おれ以外にもthom先生見てる人いたか

687 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 20:35:52.45 ID:TgcL8J/yM.net]
どう見ても最初はわかってなかったやろ
最後にやっと理解できたみたいだけど

688 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 21:25:13.63 ID:YV5lTWI/0.net]
人に優しく行きましょう
それは分かる人に与えられた特権なのです

689 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 05:40:49.56 ID:bXpTryOw0.net]
人生は優しくなるためにある

690 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:23:09.21 ID:0ps204vGM.net]
スマホ手打ちなので誤字等ありましたらすみませんがよろしくお願いします。

rangeを用いた範囲指定でcells(row,columns)の行、列の部分に端数切り上げで数式を入れたいと考えています。
vbaで roundupを用いる時はworksheetfunction.をつける必要があることをネットで知ったのですが、ページによって頭にapplication.をつけてるものとそうでないものが混在しました。有無によってどのような違いがあるのか教えてください。

691 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:47:30.52 ID:06EhkzBAd.net]
数式を入れるのかワークシート関数を使って値をいれたいのかよくわからないけど
後半の質問であればVBA上では動作に違いはないよ
「https://docs.microsoft.com/ja-jp/office/vba/api/excel.application(object)」の
「アクティブ セル (ActiveCell プロパティ) など、最も一般的なユーザーインターフェイス オブジェクトを返すプロパティとメソッドのほとんどは、Application オブジェクト修飾子を指定しないで使用できます。」
と書いてある通り
こういう質問する前にヘルプを見ると知りたい事や知っておいたいいことが書いてる場合もあるし怪しい回答の知識を覚えなくて済むから見る癖つけたほうがいいぞ

692 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:54:37.31 ID:6Q6BE8PxM.net]
>679
ありがとう、参考にします。

693 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 09:15:22.27 ID:p8/VPuFXr.net]
いえいえ

694 名前:デフォルトの名無しさん [2022/03/30(水) 10:25:12.15 ID:otm0Hfbh0.net]
実際に組んでみてうまく行かない場合に調べるとか質問とかしたらいいと思う



695 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 10:38:48.27 ID:xL2+oAob0.net]
ちょっと教えてください
複数のシートを一緒にスクロールして
常に同じ位置に同じ行列が表示させられるような移動方法ってありますか?

例)
シート1〜シート10までをグループ化して
シート1をスクロールして1000行目を頭に表示すると
残りのシート2〜シート10も同じように1000行目を表示している

よろしくお願いします

696 名前:デフォルトの名無しさん [2022/03/30(水) 14:07:54.57 ID:4QxrGADI0.net]
裸の王様がやってきた やってきた やってきたぞ

697 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:23:16.04 ID:QNA9H61R0.net]
>>683
いったんアクティブにしていいなら
Application.GotoとかWindow.ScrollIntoViewとかで表示位置は変えられるけど
まあ使い物にならない可能性が高いな

アクティブじゃないシートのスクロール位置を変える方法があるなら俺も知りたい

それかWindow10個作って同時にスクロールにするとか

698 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:31:25.53 ID:ljpoek3c0.net]
複数のシートのデータを纏めたシートを作ったらどうかな

699 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:32:55.87 ID:2JfZorGz0.net]
スクロールのイベントってないんか
クリックしたセルを同じにするマクロ
なんじゃこりゃ

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name = "Sheet1" Then
Sheets("sheet2").Select
Sheets("sheet2").Cells(Target.Row, Target.Column).Select
Sheets("sheet3").Select
Sheets("sheet3").Cells(Target.Row, Target.Column).Select
Sheets("sheet1").Select
End If

End Sub

700 名前:デフォルトの名無しさん [2022/03/30(水) 19:47:16.20 ID:R9seM6Mc0.net]
馬鹿が考えた操作なんて実装しても、所詮馬鹿の馬鹿な発想でしかない

701 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:06:13.73 ID:wN+Ljz7f0.net]
>>687
フォーム内のスクロールバーはイベント取得できるぽい
そういうのでいいならフォーム内スクロールバーに従ってシートをスクロールさせることはできそう

もしくはシート1のスクロールを監視して自分でイベント発行するか

702 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:38.10 ID:N270RWsC0.net]
彼女の下のお口から出る糸を、シート(She糸)と呼びます

703 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 22:25:54.14 ID:2JfZorGz0.net]
>>689
逆にスクロールを実装すればよかったのね
下スクロールを実装したら期待通りの動きになったわ

Sub Macro4()
' Keyboard Shortcut: Ctrl+Shift+P
Windows("Book1 - 1").Activate
ActiveWindow.SmallScroll Down:=30
Windows("Book1 - 2").Activate
ActiveWindow.SmallScroll Down:=30
Windows("Book1 - 3").Activate
ActiveWindow.SmallScroll Down:=30
End Sub

704 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 04:24:20.35 ID:YoVJ22V0M.net]
糸を出す女ってスパイダーガールか



705 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 07:19:21.13 ID:fdMR9HVCM.net]
宗教的な話題になりそうだけど、If文で判定入れてそれ以外の場合は何もしないって処理の時、elseを省く?それとも何も処理をしないって明示するためにelseの中に何も書かない?

706 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:08:06.08 ID:AJ0kjIG/a.net]
俺は省く
逆に Select Case の Case Else は必ずつけて何もしなくていいことを明示するコメントを書いておく

707 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:13:36.66 ID:YZ/4IsUH0.net]
こういう書き方ってどうにかしてうまくまとめる方法はありますか?


if C=1 then
if B=1 then
if A=1 then
msgbox "メイン処理を実行します"
else
msgbox "A=1じゃなかったので実行しなかった"
else
msgbox "B=1じゃなかったので実行しなかった"
else
msgbox "C=1じゃなかったので実行しなかった"

708 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 08:33:32.40 ID:cX1o4aeta.net]
>>695
If C <> 1 Then
msgbox "C=1じゃなかったので実行しなかった"
Goto Skip
End If
If B <> 1 Then
msgbox "B=1じゃなかったので実行しなかった"
Goto Skip
End If
If A <> 1 Then
msgbox "A=1じゃなかったので実行しなかった"
Goto Skip
End If
msgbox "メイン処理を実行します"
Skip:

Goto 嫌なら Sub に入れて Return とか

709 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 09:19:19.95 ID:qbFmdfWP0.net]
>>695
ネスト深くなるとわかりにくい
処理は簡単な単位でまとめたほうがいい
実行する/しないは一つの単位(success/errorのように)としてまとめたほうがいい

拒否理由="なし"
if c<>1 then 拒否理由="cじゃない"
else if b<>1 then 拒否理由="bじゃない"
else if a<>1 then 拒否理由="aじゃない"

if 拒否理由="なし"
 メイン処理
else
msgbox 拒否理由&"ので実行しません"

710 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 19:02:13.39 ID:qNIRpAbL0.net]
わかりにくいってだけで正常に動作しているならコメントでも書いとけばいいんじゃね

711 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 19:04:18.25 ID:iXF+QXI0M.net]
>>696
do loop 0でブレイク

712 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 10:46:13.39 ID:fjGlq1dk0.net]
>>697
おれもこんな感じだな
Elseifは好きじゃないからSelectCaseかなあ

713 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:32:39.80 ID:wbru5aYXa.net]
VBA の Select Case は Case 節に式が書けるから素直に

Select Case True
Case C <> 1
msgbox "C=1じゃなかったので実行しなかった"
Case B <> 1
msgbox "B=1じゃなかったので実行しなかった"
Case A <> 1
msgbox "A=1じゃなかったので実行しなかった"
Case Else
msgbox "メイン処理を実行します"
End Select

がわかりやすいかな

714 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 13:02:04.64 ID:ZSAOoecqp.net]
>>701
俺もこんな感じにするかな
C#とかと違って;で止められないけど
まぁそれはそれとして。



715 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 19:50:51.52 ID:xmwnc1Js0.net]
複数の条件が成り立つ場合の優先度とか気にせんと・・・

716 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 20:08:08.57 ID:rQp/oHNqa.net]
>>703
なんでドキュメント読まないの?

複数の Case 句の expressionlist 式に一致する場合は、最初に一致した句に続くステートメントのみが実行されます。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement

717 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 00:02:19.90 ID:ZgXClf4M0.net]
A=1かつB=1かつC=1だったらXが実行されるって言う事ではないのね
なんかややこしいね(´・ω・`)

718 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 03:01:36.86 ID:J74pUyNp0.net]
俺は中身が1行の時はCaseを1行にまとめる派
Sub Macro()
  Select Case True
    Case C <> 1: errmsg ("C")
    Case B <> 1: errmsg ("B")
    Case A <> 1: errmsg ("A")
    Case Else: MsgBox "メイン処理を実行します"
  End Select
End Sub

Sub errmsg(s$)
  MsgBox s & "=1じゃなかったので実行しなかった"
End Sub

719 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 06:50:49.06 ID:o4u0MtXma.net]
>>706
errmsg の呼出時の括弧は要らないのでは?

720 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 07:52:44.68 ID:6Vj/pyuu0.net]
>>706
こういうふうにはしないほうが良い?

Sub Macro()
  Select Case True
    Case C <> 1: msg ="C"
    Case B <> 1: msg ="B"
    Case A <> 1: msg ="A"
    Case Else: msg= "メイン処理を実行します"
  End Select
End Sub

msgbox(msg)

721 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 08:39:48.32 ID:D1zTFGCZM.net]
そうやって本筋じゃない方へ話題は逸れていく

722 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:01:58.41 ID:Uf1/B9Ep0.net]
Subの場合は
括弧を付けるならCallも付ける
Callを付けないなら括弧も付けない
それだけ

723 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:05:23.70 ID:r53Jbhkva.net]
>>708
> こういうふうにはしないほうが良い?
うん、それだと C = 2 でテストしたら単に C って表示されるだけだし

724 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 09:06:11.26 ID:6Vj/pyuu0.net]
>>709
今回はどんどん話を膨らませていいよ



725 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:18:01.32 ID:spDayutJd.net]
僕が考えた最高のコード
ってやつだろこんな話題にくいつくのもはずいわ

726 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:39:12.57 ID:6Vj/pyuu0.net]
>>708は間違いね
こういう風に、メッセージの中だけ変数に入れて最後で表示させるってのはやめたほうがいいでしょうか

Sub Macro()
  Select Case True
    Case C <> 1: msg ="C=1じゃなかったので実行しなかった"
    Case B <> 1: msg ="B=1じゃなかったので実行しなかった"
    Case A <> 1: msg ="A=1じゃなかったので実行しなかった"
    Case Else: msg= "メイン処理を実行します"
  End Select
End Sub

msgbox(msg)

727 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 10:49:41.47 ID:LxaPNz9fM.net]
好きにすればいい

728 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 12:48:35.67 ID:AxYcslms0.net]
>>714
実行しなかったって表示するのに実行しそうだな

729 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 13:26:31.81 ID:mz7mxvwZp.net]
しねーよハゲ

730 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:21:18.52 ID:4YOQBH220.net]
お前ら頑張ってるけど
メッセージなんかただの処理サンプルだろうから
>>701が採用されそうだけどね

731 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 15:52:40.85 ID:vYlFEoJTd.net]
実際の仕様でもなんでもない話に採用もクソもないのでは
好きにすればいいはなし

732 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:28:53.57 ID:m8vuVm8ra.net]
話題に食いつくのははずいのに批判だけはするんだな
てか、批判しかできないのかなw

733 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 17:42:03.95 ID:6Vj/pyuu0.net]


734 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:43:32.11 ID:4aElhsU0a.net]
>>714
最高のコード



735 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 20:06:13.11 ID:k57kmbe60.net]
>>722
End Sub の下に msgbox(msg) があるのに?

736 名前:デフォルトの名無しさん [2022/04/07(木) 20:57:01.15 ID:WZu7hIyw0.net]
やっと書き込めた。
BB2Cが死んでJane Stileとかいうアプリで書き込んでるけど、VBAスレもその煽りかめっきり書き込み減ってるね。

737 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 22:52:18.94 ID:shKfmndDa.net]
>>723
最(もお茶が)高(く噴き出た)のコード

738 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:32:33.40 ID:P5V0Axif0.net]
ハイパーリンクで、他のファイルを開こうとすると、警告ダイアログが出ますが、
(「ファイルには、ウイルスやコンピューターに問題を…」)
非表示にできますか?

レジストリでDisableHyperlinkWarningをやっても、ダメでした…。

739 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 09:48:16.01 ID:O75PAQWK0.net]
ユーザーフォームに設置したボタンをクリックすると
Private Sub 〜〜〜_Clickのイベントプロシージャが追加されますが、
このコードの追加位置はどういう基準で決まっていますか?

すぐ隣のボタンのClickの近くに挿入されることもあれば、
結構離れた位置に挿入されることもあります。

740 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 18:32:41.81 ID:DozpoMh4a.net]
質問は一人一つまで。

741 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:07:30.71 ID:aNhRPKRk0.net]
>>726
ウイルスでも作っているの?

742 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:44:29.30 ID:p3Omju050.net]
エクセルVBAでウイルスを作ることはできますか?
エクセルVBAでAIを作ることはできますか?

743 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 19:49:56.82 ID:0/Kcf5P10.net]
>>726
試してないから出来るか分からんけどディスプレイアラートは?

744 名前:デフォルトの名無しさん [2022/04/08(金) 19:59:37.27 ID:iHtexTHZ0.net]
>>730
直クライアントだからな
余裕で出来る



745 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:10:13.83 ID:cwm3b4Q1d.net]
>>730
はい
はい

746 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:43:11.43 ID:p3Omju050.net]
>>732
でもおまえウイルスの作り方わからないじゃん

747 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 20:59:12.69 ID:AMkeYZ900.net]
ウィルスの定義は「操作する人が意図しない動作を起こすプログラム」
だから空白のボタン押すと背景の色が変わるとかそんなんでもウィルスです

748 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 21:53:49.35 ID:iHtexTHZ0.net]
やっとBB2Cが使えるようになった
>>734
煽ってもダメ
ウイルスなんて作らないし
作り方だって載せるつもりはないよ

749 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 22:14:19.86 ID:AMkeYZ900.net]
>>736
いやもう作り方載せたって>>735

750 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 22:18:44.47 ID:7fG2FYL40.net]
ヤンキー・ドゥードルが懐かしい

751 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 00:48:37.33 ID:C63TJhml0.net]
AIの定義が明確に定まってないので自己学習して勝手に洗練されていくものもAIだしただのマクロもAI

752 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 00:55:30.60 ID:tyw5ZPAK0.net]
AIは作るものじゃない
育むものなんだよ

753 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 02:28:28.01 ID:FQQX8rtBa.net]
>>736
もうすでにウイルスのソースコード載ってますが?
>>714

754 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 06:04:10.90 ID:+bGajSMm0.net]
任意の列が左端に来るように水平スクロールする方法ってある?
Application.Gotoで左端に寄せてSmallScrollで上下位置を調整してるけど完全な水平スクロールにはならないんだよね



755 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 07:34:48.36 ID:Dec5MFVZ0.net]
With ActiveWindow
.ScrollRow = x
.ScrollColumn = y
End With

756 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 08:12:43.36 ID:+bGajSMm0.net]
>>743
それも試したけど、アクティブセルが変わると数値が変わらない?

757 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 08:52:12.11 ID:+bGajSMm0.net]
任意の列とアクティブセルの列の差を求めればScrollRowで行けるかな?
今度試してみよう

758 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 11:14:24.15 ID:Mfv2lAJId.net]
Sub World()
Dim Abe As Virus
Set Abe = New prime minister
Abe.coin.End(xldown)
Abe.tax.End(xlup)
Abe.wing.End(xlright)
End World

759 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 12:54:27.64 ID:FQQX8rtBa.net]
で、誰かがズームしたりページレイアウト変えたりして、
トラブルの元になると。
ウィンドウ系はいじらない方がいいと
職場のおじいちゃんが言ってた。

760 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:45:19.95 ID:6rDUdJJw0.net]
アース、ファイア、ウォータ系の属性のほうがいいかもね

761 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 14:39:59.55 ID:FQQX8rtBa.net]
Excel VBA の Window 関連のオブジェクトって、船に刻して剣を求むって感じ
走っている電車の中から、指で窓ガラスに風景を描くみたいな

762 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 15:26:28.03 ID:+bGajSMm0.net]
さっぱり例えが分からんw

763 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 16:04:42.29 ID:2h0/Yyo40.net]
詩的すぎるだろw

764 名前:デフォルトの名無しさん [2022/04/09(土) 18:41:50.44 ID:8cH1hwr70.net]
>>749
なるほど納得。
納豆食う。



765 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 20:23:31.13 ID:8/Ft6Y7L0.net]
日本人だけど意味がさっぱりわからんw

766 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 22:16:01.68 ID:XcpxlUbda.net]
ごめん失敗したテヘ

767 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:02:21.87 ID:tD6svEJl0.net]
ヘッドレスChromeをseleniumやWebdriverなしでどうにかなりませんか?

768 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 19:56:53.98 ID:anoG1hsda.net]
>>755
UiPathおすすめ

769 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 21:59:21.11 ID:Kyp6sDnX0.net]
オブジェクトの代入を同一プロジェクトで使いまわすことはできるでしょうか?

Public ws1 as worksheet
Module1
Sub test1()
Set ws1 = Worksheets("Sheet1")
ws1.Range("A1") = "Test1"
End Sub

Module2
Sub test2()
Set ws1 = Worksheets("Sheet1")
ws1.Range("A2") = "Test2"
End Sub

これを下記のようにできないかな、ということです。

Public ws1 as worksheet
Set ws1 = Worksheets("Sheet1")

Module1
Sub test1()
ws1.Range("A1") = "Test1"
End Sub

Module2
Sub test2()
ws1.Range("A2") = "Test2"
End Sub

770 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 22:26:56.33 ID:p2QF/trT0.net]
なにがしたいのか

771 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 22:56:21.06 ID:7xr/cYmKd.net]
オブジェクトは無理でしょ
Funtionで対応すれば良い

最もそうしない方が良いからデフォで出来ないようになってることは考慮すべきだと思う

772 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:25:19.91 ID:9dLPe5470.net]


773 名前:?そもそもワークシートってオブジェクト化されてるんだからわざわざ変数にセットする必要なくない?
対象のシートがコードを書いているファイルにあるなら
Sheet1.Range("A1").Value = "Test1"
で良いでしょ?
[]
[ここ壊れてます]

774 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:56:27.01 ID:Kyp6sDnX0.net]
簡略化するためにThisworkbookを省略して書きましたが、実際には
マクロ動作中にほかのブックを触っても大丈夫且つコードがすっきり
するようにSet ws1 = Thisworkbook.Worksheets("Sheet1")のように
しています

少し時間ができたので増築増築でややこしくなったコードを整理している
最中で、複数のプロシージャで使う固定のシートはまとめて変数にセットして
おこうかと思ったのですがFunctionで調べてみます、ありがとうございます



775 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 23:58:43.07 ID:amT3mnzR0.net]
変数を使いまわす(というか広域で使う)のは普通にできる
モジュールレベルでPublic変数定義するだけ
なんならモジュール名で修飾してもいい

ただ、変数の寿命が管理しにくいから、
中身がセットされてないとか、いつの間にか中身が消えてるとかいうことになるかもなw

776 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 00:23:20.44 ID:ccOkbRo70.net]
シートをオブジェクト名で指定すればどのブックを触っていようがそのコードが書いてあるブックから参照すると思うのだけど
>>761 がやろうとしてる事って他のブックのシートを変数に収納したい場合しか使わなくないか?

777 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 02:00:50.12 ID:vEgugssg0.net]
>>763
一部のメソッドでオブジェクト名を省略できないのがあるじゃん
自分がちゃんと理解してないのが原因なのはわかってるけど、構文とかデフォルトのオブジェクトとかいちいち覚えるのが面倒くさいんだわ

778 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 06:30:21.52 ID:j+U2fOIu0.net]
やるならこうか?
init()に色々初期化みたいなものをまとめて、毎回呼び出す

Public ws1

Sub init()
Set ws1 = Worksheets("sheet1")
End Sub

Sub foo()
Call init
Cells(1, 1) = 1
End Sub

Sub foo2()
Call init
Cells(2, 2) = 2
End Sub

779 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 06:46:39.08 ID:da5RcI7d0.net]
汎用性と独立性を確保するなら引数でシートを渡せ

780 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:15:19.69 ID:t+9U/8lg0.net]
>>757
初心者がかち当たるあるある疑問だよね。
最初は>>762の言う方法でやってみればいいと思うよ。
もう少しやり込んでくればデバッグし易くするためにモジュールスコープレベルのPrivateな変数をPublicな関数やプロパティでやり取りするようになるんだけどね。

781 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:20:31.49 ID:j+U2fOIu0.net]
こういうイメージ?
よく考えたらpublicにする必要性が全くない

Sub init()
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
Set ws3 = Worksheets("sheet3")
Set ws4 = Worksheets("sheet4")

End Sub

Sub foo()
Call init
ws1.Cells(1, 1) = 1
End Sub

Sub foo2()
Call init
ws2.Cells(2, 2) = 2
End Sub

782 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 07:21:37.35 ID:j+U2fOIu0.net]
と思ったらpublicいるわスコープ他の言語と間違えたわ

783 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:42:54.51 ID:oSnOjvyr0.net]
Recordset.openでselect文を実行するとエラーになるけどツールでログに出した物を実行してもエラーにならない時って何が原因?
ダブルクォートは含まれてない
あとはイミディエイトウィンドウに出てくるsqlが変なとこで改行されてるけど関係ないよね?

784 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:45:16.76 ID:pq/BAZJoM.net]
シラネーヨ



785 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:22:20.07 ID:D2BP6h+A0.net]
742で書いた完全な水平スクロールできたわ

786 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:25:18.42 ID:D2BP6h+A0.net]
>>757
Sheet1モジュールに書くだけでは?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef