Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2010)
複数の離れた範囲をresizeしたい
投稿日時: 19/01/06 14:23:27
投稿者: はるき

初歩的な質問ですみません。
いろいろ試したのですが、うまくいかないので、アドバイスお願いします。
 
UnionとResizeを使用して、下記のように選択範囲を変更したいのですが、、、
A列が連続した状態で選択されたときは、できるのですが、下記のように
行を空けて複数選択した時にエラー(アプリケーション定義またはオブジェクト定義のエラー)
となってしまいます。下記の構文のどこを修正すればよいかご指導願います。
 
行番号 A列       C列〜Z列
 1
 2  選択        選択
 3       →
 4  選択        選択
 5  選択        選択
 6
 
Sub test()
 Dim myRange as range, c as Range
    For Each c In Selection
       If myRange Is Nothing Then
            Set myRange = c
       Else
            Set myRange = Union(myRange, c)
       End If
    Next c
  With myRange
     .Offset(, 2).Resize(, 23).Select
  End With
End Sub

回答
投稿日時: 19/01/06 16:26:37
投稿者: miyakodai

Offset、Resizeした範囲をUnionすればいいのでは
 
Sub test()
    Dim myRange As Range, c As Range
     
    For Each c In Selection
        If myRange Is Nothing Then
            Set myRange = c.Offset(, 2).Resize(, 23)
        Else
            Set myRange = Union(myRange, c.Offset(, 2).Resize(, 23))
        End If
    Next c
     
    myRange.Select
     
End Sub

投稿日時: 19/01/06 16:40:31
投稿者: はるき

miyakodai 様
  なるほど、offsetしたあとの範囲をUNIONですね。あっさり、できました。
    ありがとうございます。