アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (4件)

プロパティにするとか。



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

失礼しました。


試してみたらうまくいきませんでした。
    • good
    • 0

一番最初に


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

Option Explicit
Public Srt1 As Object

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

できません。



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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A