推しミネラルウォーターはありますか?

先日ここで、インプットボックスを使ったシート間コピーを教えて頂きました。
その中で、コピー先を選択した後にそのシートがselectされた状態にして、ペースト確認のmsgboxを表示したいのですが、どの様したらいいのでしょうか?

Sub コピー()
Dim CopyArea As Range
Dim PasteArea As Range
On Error GoTo ErrorHandler
Dim a As String
Set CopyArea = Application.InputBox(prompt:= _
"コピー元を指定して下さい", Title:="コピー元", Type:=8)
BUCK:
Set PasteArea = Application.InputBox(prompt:= _
"貼り付け先を指定して下さい", Title:="貼り付け先", Type:=8)

Sheets(****).Select

If MsgBox("貼り付けます。" & Chr(10) & "よろしいですか?キャンセルで再選択。", vbOKCancel + vbQuestion) = vbOK Then
CopyArea.Copy PasteArea
Else
GoTo BUCK
End If
Exit Sub
ErrorHandler:
MsgBox "処理が取り消されました"
End Sub

A 回答 (4件)

前質問の時、色々やってみたが(色々なケースを考慮すると、うまくいかなかった部分があり)、回答は断念し、あげていませんが、その一部に作っていました。


x = b.Worksheet.Name
これをSheet(X)という風に使えばどうですか。
---
Sub test01()
Set a = Application.InputBox("コピー元", Type:=8)

Set b = Application.InputBox("コピー先", Type:=8)
x = b.Worksheet.Name
MsgBox x
'a.Copy b
End Sub

この回答への補足

早速のご回答ありがとうございます。コピー先は必ず別シートになるので出来ます!
最近すっかり煮詰まってしまい、一つ一つの動作に感動している今日この頃です。

欲張って、もう1つ質問なのですが、Set b=Application.InputBoxで得たセルや行、列の位置を、仮にy=b.で取得するためにはどの様な命令文を入れればいいのでしょうか。

補足日時:2008/04/26 14:02
    • good
    • 0

意味がちょっと良くわかりませんが、こういう事でしょうか?



Set b=Rnge(Application.InputBox)'"C2"と入力
y=b.Row 'これで選択された行(2)がyに代入される
y=b.Column 'これで選択された列(3)がyに代入される
『Rows』としないのがポイントです
    • good
    • 0
この回答へのお礼

列名はcolumnで取得できるんですね。
これで列と行の両方が分かりました
ありがとうございます。

お礼日時:2008/04/29 12:37

すいません


間違えました
× Set b=Rnge(Application.InputBox)'"C2"と入力
○ Set b=Range(Application.InputBox)'"C2"と入力
    • good
    • 0

> セルや行、列の位置



アドレスを取得して表示するということですか?

Sub コピー()
Dim CopyArea As Range
Dim PasteArea As Range
On Error GoTo ErrorHandler
Dim a As String
Set CopyArea = Application.InputBox(prompt:= _
"コピー元を指定して下さい", Title:="コピー元", Type:=8)
BUCK:
Set PasteArea = Application.InputBox(prompt:= _
"貼り付け先を指定して下さい", Title:="貼り付け先", Type:=8)

sn = PasteArea.Worksheet.Name
pa = PasteArea.Address
Sheets(sn).Select

If MsgBox(sn & "の" & pa & "に貼り付けます。" _
& Chr(10) & "よろしいですか?" _
& Chr(10) & "キャンセルで再選択。", vbOKCancel + vbQuestion) = vbOK Then
CopyArea.Copy PasteArea
Else
GoTo BUCK
End If
Exit Sub
ErrorHandler:
MsgBox "処理が取り消されました"
End Sub
    • good
    • 0
この回答へのお礼

Addressで行列を一度に取得できるんですね。
select等に応用できそうです。ありがとうございます。

お礼日時:2008/04/29 12:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!