プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBA 変数への代入がうまくできない

かなり初心者です。。。
選択範囲を変数に記憶したいのですがうまくいきません。
メソッドが対応していないとエラーになります。。。
stRng2に"A1:A8”のような範囲のデータを記憶したいのです。

dim stRng2 as Range

stRng2 = wkb.Worksheets(stSheet1).Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False)


すいませんが、どなたか教えてください。

A 回答 (4件)

Selection.Address は、アクティブなシートのセルの範囲しか取得できません。


取得したいシートをアクティブにしてから取得しましょう。

Dim stRng2 As String
Dim NowActiveSheet As Worksheet

Set NowActiveSheet = ActiveSheet '現在アクティブなシートを記憶
Application.ScreenUpdating = False '画面更新停止
wkb.Worksheets(stSheet1).Select 'stSheet1シートをアクティブ
stRng2 = Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False)
NowActiveSheet.Select '元のシートをアクティブに
Application.ScreenUpdating = True '画面更新再開
    • good
    • 0
この回答へのお礼

お礼が遅くなりすいません。

非常に助かりました!

画面更新の停止、再開も参考なりました!

ありがとうございます!!

お礼日時:2010/02/04 12:01

Dim wkBk As Workbook


Dim wkSt As Worksheet
Dim rgnA1 As Range
Dim rgnA8 As Range

Dim stRng2 As Range
Dim str結果 As String

Set wkBk = ThisWorkbook
Set wkSt = wkBk.Worksheets("Sheet1")

Set rgnA1 = wkSt.Range("A1")
Set rgnA8 = wkSt.Range("A8")

Set stRng2 = wkSt.Range(rgnA1, rgnA8)

str結果 = stRng2.Address(ColumnAbsolute:=False, RowAbsolute:=False)
MsgBox str結果
    • good
    • 0
この回答へのお礼

ご指導ありがとうございました!

お礼日時:2010/02/04 13:33

オブジェクト型のデータの場合はSet命令が必要です。


Set stRng2 = ~
上記のように修正してみてください。
    • good
    • 0

>dim stRng2 as Range


文字列なら
Dim stRng2 As String
なのでは?

Selection.Addressの結果も文字列ですし。
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。


stringでも同じエラーが出てしまいました。

試しにSETを先頭につけてみましたがやはりだめです。。。

お礼日時:2010/02/01 17:02

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

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