|
こんにちは。かみちゃん です。
本当は、へるぴーさんがまずは「マクロの記録」を使って、どこまでできているの
かを見せていただきたかったのですが、りすりすさんからコードの提示がありまし
たので、それを元に私ならこうするというコードを提示しておきます。
コード中の変数名やメッセージなど、りすりすさん提示のコードをベースにさせて
いただいています。
ただ、CopyではなくCutでは?(「切り取り」と言っているので・・・)
「貼り付け先は上から見て」とは、「どの列の上から見て」かもはっきりしていませんが・・・
Option Explicit
Sub test()
Dim SourceSheet, DestSheet As Worksheet
Dim c As Range
Dim Text As String
Text = InputBox("もしもし")
Set SourceSheet = Sheets("Sheet1") ' 探すシートを指定
Set DestSheet = Sheets("Sheet2") ' 貼り付け先のシート
' ↓ここの列(A)で検索
Set c = SourceSheet.Columns(1).Cells. _
Find(What:=Text, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
If Not c Is Nothing Then
'該当データ(つまりその行(見つかったセルを含む行)丸ごと)を切り取る。
Rows(c.Row).Cut
'貼り付け先シートを選択
DestSheet.Select
'貼り付け先は上からみて、最初の空白行の1行上
'(上から見て連続してデータの入っている最下端)
'のセルがExcelの最大行より小さい場合
'貼り付け先の上とは、ここでは、A列のことをさしているものとする。
If Range("A1").End(xlDown).Row < Columns(1).Rows.Count Then
'貼り付ける
Range("A1").End(xlDown).Offset(1).Select
ActiveSheet.Paste
Else
'Excelの最大行だった場合は、空白行はないのでエラーとする。
MsgBox "もういっぱいで書き込めないや(-.-) "
End If
'探すシートに戻す
SourceSheet.Select
Application.CutCopyMode = False
Else
'該当データが見つからなかった場合
MsgBox "そんなのないよん"
End If
End Sub
|
|