104954 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

ULALA'Sブログ

ULALA'Sブログ

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
2020.09.02
XML
カテゴリ:VBA
前回の記事​で​はFindで見つかったセルに対して
範囲コピーを行い、所定のセルへ張り付ける
ということを行ったが、

今回はResizeによる範囲コピーを行う方法について
記載しようと思う。

--------------------------------------
①Range.Resize
--------------------------------------
​​​​​​​​​​​​​​​​​​​
ほぼ前回と同様の画像だが
検索する文字を記入し
「検索&コピペ」ボタンを押下する



ソース

​​Sub ​findCopyAndPaste​()​​
​​​​    Dim result As Range​​​​
​​​​​​​​​​​    Set result = Range("B36:E40").Find(LookAt:=xlWhole, What:=Range("G37").Value)

    If result ​Is Nothing Then​​​​​​​​​​​​

​        MsgBox ("見つかりませんでした")​
        ​End​
​    End If

    ​' 見つかったセルを範囲拡張してコピー&ペースト​​

    ​'Range(result, result.End(xlToRight)).Copy Range("B43")​ '※ 前回ソース
​​​​​    result.Resize(3, 4).Copy Range("B43")​​​​​
​End Sub​

結果



.Resizeの引数は、、
第1引数:相対行数
第2引数:相対列数

となっており、今回の場合だと
見つかったセル位置から
行数を相対的に3行(自分自身含む)
列数を相対的に4列
に範囲を拡張してコピーした内容を
貼り付け位置配下にペーストする、
といった内容にしている。

別にFindしなくても、セルを直接指定して
範囲をResizeすることも可能

​​​Range("B36").Resize​(3, 4).Copy Range("B43")​​

この場合「1-1」~「3-4」が
セルにペーストされることになる。

ちなみに、Resizeの引数には行、列ともに
マイナス値は指定できない。



Offsetは引数にマイナス指定可能だったが、
Resizeは引数にマイナス指定不可能なので
覚えておいた方が良いかと思う。

Offsetの記事は​​こちら
​​​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2020.09.02 23:20:32
コメント(0) | コメントを書く


PR

Profile

ULALA13

ULALA13

Calendar


© Rakuten Group, Inc.