[[20070529103121]] 『InputBoxのキャンセル処理』(めぐ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『InputBoxのキャンセル処理』(めぐ)
 いつも拝見させて頂いてます。
 下記コードでInputBoxに入力したセル番地を基点に
 Range("A1:D1")をコピーしたデータを値貼り付けしてるのですが、
 キャンセルボタンを押下したらどうしてもエラーがでるので、
 解決方法をご教授いただけないでしょうか?Help機能やサイトを参考にしても
 ダメでした。。すみません。。

 Sub test()
 Dim myR

     myR = Range("" & Application.InputBox _
    ("セルを選択してください", Type:=8).Address).Select
     If myR = "" Then Exit Sub
     Range("A1:D1").Copy
     Selection.PasteSpecial Paste:=xlPasteValues

 End Sub

 こんな感じですか?(ROUGE)
'----
Sub test()
    Dim myR As Range
    On Error Resume Next
    Set myR = Application.InputBox("セルを選択してください", Type:=8)
    If myR Is Nothing Then Exit Sub
    On Error GoTo 0
    myR.Resize(, 4).Value = Range("A1:D1").Value
End Sub

 ROUGE様、ありがとうございました。
 できました。

  >myR = Range("" & Application.InputBox _
    ("セルを選択してください", Type:=8).Address).Select
 こんなつづり方しかわからず、固執してたので On Error〜
 とかもやみくもに試してたので当然ダメだったんです。
 よく勉強致します。(めぐ)

 たびたび申し訳ありません。
 先ほどのコードは私もTEST用で、実際のデータには実は
 別ブックの指定シートからデータを拾い、このコードのあるブックに
 InputBoxに入力したセル番地を基点に転記するというものなんですが、

 >myR.Resize(, 4).Value = Range("A1:D1").Value  
 こちらの書き方をどうつづればよいでしょうか?
 コピー範囲が2行なのでわかりません。すみません。

 Sub 部品()

 Dim WS2 As Worksheet
 Set WS2 = Worksheets("部品")

 Application.ScreenUpdating = False

     Range("" & Application.InputBox _
         ("セル番地を入力してください", Type:=8).Address).Select
    Windows("売上.xls").Activate
     Sheets("転記用").Select
      Range("A14:R15").Copy
    Windows("予算.xls").Activate
     WS2.Select
      Selection.PasteSpecial Paste:=xlPasteValues

 Application.ScreenUpdating = True

 End Sub

 Sub 部品()
 Dim rng As Range
 On Error Resume Next
 Set rng  = Application.InputBox("セル番地を入力してください",Type:=8)
 If rng Is Nothing Then Exit Sub
 On Error GoTo 0
 With rng
      ThisWorkbook.Sheets("部品").Range("a1").Resize(,Rows.Count,.Columns.Count).Value = .Value
 End With
 Set rng = Nothing
 End Sub

 かな?
 (seiya)


 seiya様、お世話になります。
 エラーがでましたので
 <If rng = Nothing Then Exit Subを
 If rng Is Nothing Then Exit Subにしてみたらエラーが消えたのですが
 これで良かったでしょうか?知識に乏しいので思いつくまま変更しただけ
 なのです。すみません。

 そして私の理解力が無く大変申し訳ないのですが、
 売上.xls シート:転記用のRange("A14:R15").Copyはどこに入れれば
 よいでしょうか?
 Withの前に入れてみたのですが、本コードがある予算.xls シート名:部品に
 今度はInputBoxに入力したセル番地を基点に貼りつかなくなりまして。。
 (めぐ)

 おっと、 Is でした。(修正済)
 InputBox で Select できませんか?
 (seiya)


 こっちでは?(ROUGE)
'----
Sub 部品()
    Dim myR As Range, ws As Worksheet
    On Error Resume Next
    Set ws = Workbooks("売上.xls").Sheets("転記用")
    If ws Is Nothing Then
        MsgBox "「売上」ファイルが開かれていないか、" & Chr(10) & _
            "開かれていても「転記用」シートが存在しません。"
        Exit Sub
    End If
    Set myR = Application.InputBox("セルを選択してください", Type:=8)
    If myR Is Nothing Then Exit Sub
    On Error GoTo 0
    With ws.Range("A14:R15")
        myR.Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
End Sub

 seiya様、ROUGE様お時間さいていただきありがとうございました。
 お蔭様でできました。
 Resizeをヘルプやネットで調べて私も勉強いたします。(めぐ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.