Excel VBA質問箱 IV

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

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


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

【16441】Withステートメント かんきち 04/7/27(火) 23:41 質問[未読]
【16442】Re:Withステートメント Asaki 04/7/27(火) 23:53 回答[未読]
【16445】Re:Withステートメント かんきち 04/7/28(水) 0:28 質問[未読]
【16446】Re:Withステートメント Asaki 04/7/28(水) 0:38 回答[未読]
【16447】Re:Withステートメント IROC 04/7/28(水) 8:46 回答[未読]
【16485】Re:Withステートメント かんきち 04/7/29(木) 0:05 お礼[未読]

【16441】Withステートメント
質問  かんきち  - 04/7/27(火) 23:41 -

引用なし
パスワード
   Withステートメントを書いていて疑問に思ったことがあるので質問させていただきます。

通常、Wihtステートメントは下記のように

With Worksheets("シート1")
  .Cell(4,4).value
End With
といった書き方をしますが長いプログラム中にWithステートメントがたくさん出てくると
見にくい気がするのですがソースの冒頭で
sheet1 = Worksheets("シート1")
というようにsheet1という変数に格納して以後は
sheet1.Cell(4,4).value
というような使い方はできるのでしょうか?

【16442】Re:Withステートメント
回答  Asaki  - 04/7/27(火) 23:53 -

引用なし
パスワード
   こんばんは。

>sheet1 = Worksheets("シート1")
>というようにsheet1という変数に格納して以後は
>sheet1.Cell(4,4).value
>というような使い方はできるのでしょうか?

試してみて、如何でしたか?
宣言にもよるかもしれませんが、エラーが出るのでは?
オブジェクトは Set をつけて代入します。

【16445】Re:Withステートメント
質問  かんきち  - 04/7/28(水) 0:28 -

引用なし
パスワード
   お返事ありがとうございます。
Setを使用するということで検索したところ某サイトで下記のような例文を
見つけました。
With ActiveSheet
  Set g_Ball = .Shapes("ball")
  Set g_Box = .Shapes("box")
End With
上記に習い

Dim A As Variant
With WorkSheets("マクロ")
  Set A = .Shapes("ball")
End With
と記述したところ
「オブジェクトはこのプロパティまたはメソッドをサポートしていません」
と出て
Dim A As String
では「オブジェクトが必要です」とエラーが出てしまいます。
WorkSheets("マクロ")を代入するのは無理なのでしょうか?

【16446】Re:Withステートメント
回答  Asaki  - 04/7/28(水) 0:38 -

引用なし
パスワード
   残念ながら、検索して出てきたものが、今回とはちょっと違うケースのようです。

宣言は、Worksheet型にします。

Sub Test()
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
MsgBox sh.name & "シートのA1セルの値は " & sh.cells(1,1).Value
Set sh = Nothing
End Sub

【16447】Re:Withステートメント
回答  IROC  - 04/7/28(水) 8:46 -

引用なし
パスワード
   たとえシートオブジェクトを変数にSetして
コードを記述したとしても、With文は便利なので活用して下さい。

処理速度も向上しますし。

【16485】Re:Withステートメント
お礼  かんきち  - 04/7/29(木) 0:05 -

引用なし
パスワード
   ▼IROC さん:
>たとえシートオブジェクトを変数にSetして
>コードを記述したとしても、With文は便利なので活用して下さい。
>
>処理速度も向上しますし。
無事にできました。
ご返答ありがとうございました。

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