こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel VBA 定数にオブジェクトを指定したい

Excel VBA 定数にオブジェクトを指定したい

いつもお世話になりますm(__)m
Excel VBAで、定数としてオブジェクトの指定はできないのでしょうか?

例えば、WorkSheets("Sheet1")を定数「Srt1」として設定したいのですが、
 Public Const Srt1 As Object = Worksheets("Sheet1")
としても「定数のデータ型が不正です」とエラーがでます。

例えば、セルに値をセットする時に
Worksheets("Sheet1").Range("A1").Value="あああ"
Worksheets("Sheet1").Range("A2").Value="いいい"
Worksheets("Sheet1").Range("A3").Value="ううう"
と書きますが、これを
Srt1.Range("A1").Value="あああ"
Srt1.Range("A2").Value="いいい"
Srt1.Range("A3").Value="ううう"
と書ければプログラムも見やすく、書きやすくなると思いました。

プログラムの最初に
Dim Srt1 As Object
Set Srt1 = Worksheets("Sheet1")
とすれば使えるのですが、複数のシート名をまずは定数として登録したいと思っていますが、オブジェクト(ワークシート名)は定数として登録することは出来ないのでしょうか?

お詳しいかた、是非ともご教授お願い致しますm(__)m

投稿日時 - 2010-10-12 16:17:27

QNo.6245076

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

プロパティにするとか。

Property Get Srt1() As Worksheet
Set Srt1 = Worksheets("Sheet1")
End Property

投稿日時 - 2010-10-12 17:12:31

ANo.3

WDY

失礼しました。
試してみたらうまくいきませんでした。

投稿日時 - 2010-10-12 16:38:38

ANo.2

WDY

一番最初に
Public Srt1 As Object
として定義して(クラス変数って言うんでしょうか?)
各メソッドで
Set Srt1 = Worksheets("Sheet1")
という方法ではどうでしょう?
こうすればそのメソッドだけじゃなくてクラス全体で使えると思います。

Option Explicit
Public Srt1 As Object

Private Sub メソッド名()
 Set Srt1 = Worksheets("Sheet1")
 処理
 
End Sub

投稿日時 - 2010-10-12 16:33:36

ANo.1

できません。

オブジェクト型は定数にできません。
インスタンス化が必要だからです。
つまり、インスタンスを作り出すと言う
実行行為により、始めて有効になるような
ものを静的に定義できないということです。

「インスタンス化」が分からない場合は
別途、ご質問ください。

投稿日時 - 2010-10-12 16:25:06

あなたにオススメの質問