- ベストアンサー
エクセルVBA 変数への代入がうまくできない
エクセルVBA 変数への代入がうまくできない かなり初心者です。。。 選択範囲を変数に記憶したいのですがうまくいきません。 メソッドが対応していないとエラーになります。。。 stRng2に"A1:A8”のような範囲のデータを記憶したいのです。 dim stRng2 as Range stRng2 = wkb.Worksheets(stSheet1).Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False) すいませんが、どなたか教えてください。
- みんなの回答 (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 '画面更新再開
その他の回答 (3)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
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結果
お礼
ご指導ありがとうございました!
- nda23
- ベストアンサー率54% (777/1416)
オブジェクト型のデータの場合はSet命令が必要です。 Set stRng2 = ~ 上記のように修正してみてください。
- bluecampus
- ベストアンサー率66% (138/209)
>dim stRng2 as Range 文字列なら Dim stRng2 As String なのでは? Selection.Addressの結果も文字列ですし。
お礼
ご連絡ありがとうございます。 stringでも同じエラーが出てしまいました。 試しにSETを先頭につけてみましたがやはりだめです。。。
お礼
お礼が遅くなりすいません。 非常に助かりました! 画面更新の停止、再開も参考なりました! ありがとうございます!!