• ベストアンサー

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

エクセルVBA 変数への代入がうまくできない かなり初心者です。。。 選択範囲を変数に記憶したいのですがうまくいきません。 メソッドが対応していないとエラーになります。。。 stRng2に"A1:A8”のような範囲のデータを記憶したいのです。 dim stRng2 as Range stRng2 = wkb.Worksheets(stSheet1).Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False) すいませんが、どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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 '画面更新再開

tochou4848
質問者

お礼

お礼が遅くなりすいません。 非常に助かりました! 画面更新の停止、再開も参考なりました! ありがとうございます!!

その他の回答 (3)

回答No.3

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結果

tochou4848
質問者

お礼

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

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

オブジェクト型のデータの場合はSet命令が必要です。 Set stRng2 = ~ 上記のように修正してみてください。

回答No.1

>dim stRng2 as Range 文字列なら Dim stRng2 As String なのでは? Selection.Addressの結果も文字列ですし。

tochou4848
質問者

お礼

ご連絡ありがとうございます。 stringでも同じエラーが出てしまいました。 試しにSETを先頭につけてみましたがやはりだめです。。。

関連するQ&A