ULALA'Sブログ

ULALA'Sブログ

2020年09月01日
XML
カテゴリ: VBA
​​ Find関数による検索 を記載したので、
今度はそれを応用して範囲コピーを実施してみる。


①Range.End(xlToRight)


以下図のように、検索する文字を記入し
「検索&コピペ」ボタンを押下する



ソース

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")

End Sub

結果




Range ( result result . End ( xlToRight )). Copy Range ("B43")

が若干わかりずらいと思うが、

第1引数のresult
 →検索結果として返されたRange("B38")

​​第2引数のresult. End(xlToRight)
 →B38と同一行で データが存在する最終列 のRange​​


となる。

よって、 検索で見つかったB38の値から、
B38と同一行で最終列のE38までを
​コピーして
B43 (を開始セルとして) 張り付けろ 、ということ。​


​「xlTo~」という指定は、実務でも頻繁に利用するので
覚えておいた方が良いかと思う。

あと何回か先の記事で記載しようとおもう。

ここからは余談だが、、
実務ではCopy関数なんて使ってたら、
パフォーマンスはおろか、正常に動かないことも度々
起こるので、自分は使わないようにしている。

細かい話になるが、CopyはExcelの枠を超えて、
Windowsのクリップボードを利用してしまうので、

Copyを使わずに、​配列に変換してからセルへ値として格納する方が
パフォーマンス的にも良い。

この辺は本当に試験用としてだけ一時的に覚えておくだけにしよう。。






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

最終更新日  2020年09月01日 23時34分22秒
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

プロフィール

ULALA13

ULALA13

カレンダー


© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: