Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3076 / 13644 ツリー ←次へ | 前へ→

【64414】SETステートメントの適用範囲 にしび 10/2/4(木) 10:37 質問[未読]
【64415】Re:SETステートメントの適用範囲 Jaka 10/2/4(木) 11:04 発言[未読]
【64419】Re:SETステートメントの適用範囲 にしび 10/2/5(金) 8:38 お礼[未読]
【64438】Re:SETステートメントの適用範囲 yoshi 10/2/6(土) 16:13 発言[未読]
【64417】Re:SETステートメントの適用範囲 よろずや 10/2/4(木) 19:01 発言[未読]
【64418】Re:SETステートメントの適用範囲 にしび 10/2/5(金) 8:35 お礼[未読]
【64428】Re:SETステートメントの適用範囲 よろずや 10/2/5(金) 19:09 回答[未読]

【64414】SETステートメントの適用範囲
質問  にしび  - 10/2/4(木) 10:37 -

引用なし
パスワード
   はじめまして。VBAをやり始めたばかりです。
早速ですが質問させていただきます。
シート内にコマンドボタンをいくつか作って処理を行うVBAを作っているのですが、
複数のSUBプロシージャで同じset〜の構文を書かずにそのシート内のSUBプロシージャすべてに適用されるにはどのように描けばいいのでしょうか?
例えば、
Dim syori As Range
Sub CommandButton1_Click()
  Set syori = Worksheets("Sheet1").Range("B25")
…中略
End Sub
Private Sub CommandButton2_Click()
  Set syori = Worksheets("Sheet1").Range("B25")
…中略
End Sub
↑をset〜を一回だけにしたいのですが…。
うまく説明できず申し訳ありませんが、教えてください。

【64415】Re:SETステートメントの適用範囲
発言  Jaka  - 10/2/4(木) 11:04 -

引用なし
パスワード
   こういうので良いのかな?

Dim syori As Range

Private Sub CommandButton1_Click()
 Call RgSet
End Sub

Private Sub CommandButton2_Click()
 Call RgSet
End Sub

Private Sub CommandButton3_Click()
 Call RgSet
End Sub

Private Sub CommandButton4_Click()
If Not syori Is Nothing Then
  MsgBox syori.Address
End If
End Sub

Sub RgSet()
  Set syori = Worksheets("Sheet1").Range("B25")
End Sub

【64417】Re:SETステートメントの適用範囲
発言  よろずや  - 10/2/4(木) 19:01 -

引用なし
パスワード
   そんな1行だけ共通化しようなんて無駄なことを考える
暇があったら、もっとVBAの勉強をしましょう。

最初に1回だけSetして後で使いまわそうとか
考えると、後で痛い目に遭いますよ。

他のプログラミング言語と比較すると、
ExcelVBAはかなり不安定です。

毎回Setすることをお勧めします。

【64418】Re:SETステートメントの適用範囲
お礼  にしび  - 10/2/5(金) 8:35 -

引用なし
パスワード
   よろずや さん、アドバイスありがとうございます。
質問にあるのはあくまで一部で、実際はsetしているセルが何個もあるので、一回にした方がファイルサイズもちいさくなるのかなと。
ご指摘いただいた通り、毎回setすることにいたします。
ただ、勉強不足なのは認めますが、勉強中故の質問ですので、ご容赦ください。
できればよろずやさんお勧めの初心者向けのExcelVBAの本があれば教えてください。
私は、実際にコードを書いて理解していくタイプなので、コード例が豊富なものがいいのですが、ご存じないですか?

【64419】Re:SETステートメントの適用範囲
お礼  にしび  - 10/2/5(金) 8:38 -

引用なし
パスワード
   ▼Jaka さん:

ありがとうございます。
教えていただいた通りのコードでやってみたのですが、
動きませんでした。
定義されていませんというような内容のメッセージがでてしまいます。
多分私の作り方のどこかが悪くて出ているのでしょうが、知識不足で分かりません。
とりあえず毎回setすることにし、もう少し勉強して理解できるようになったら、またチャレンジしたいと思います。

ご親切にありがとうございました。

【64428】Re:SETステートメントの適用範囲
回答  よろずや  - 10/2/5(金) 19:09 -

引用なし
パスワード
   >できればよろずやさんお勧めの初心者向けのExcelVBAの本があれば教えてください。

何が最適かは本人の理解度によって変わってきます。
実際に本屋さんで立ち読みしてください。
1. 最初の方のページには知っていることが書いてある。
2. 真ん中辺には知りたいことが書かれているような気がする。
3. 最後の方には理解できないことが書いてある。

勉強が進むにつれて、次々と買い足しましょう。

【64438】Re:SETステートメントの適用範囲
発言  yoshi  - 10/2/6(土) 16:13 -

引用なし
パスワード
   >質問にあるのはあくまで一部で、実際はsetしているセルが何個もあるので、一回にした方がファイルサイズもちいさくなるのかなと。
>ご指摘いただいた通り、毎回setすることにいたします。

setしているセルが何個もあるのであれば、Jakaさんレスのように別プロシージャにするのが定番です。
同じコードを何ヶ所にも書くのはばかげています。

3076 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free