• ベストアンサー

エクセルのマクロ

Sub test() Set x = Application.InputBox(Prompt:="", Type:=8) Selection.Cut Destination:=x End Sub 上記マクロは、選択されている領域を、指定したセルを基点として移動させるものです。 実行後に、移動した領域を選択状態にするにはどういった記述が必要になるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

'こんな感じでどうでしょう Sub test() Dim x As Range Dim newX As String Set x = Application.InputBox(Prompt:="", Type:=8) newX = x.Address Selection.Cut Destination:=x Range(newX).Resize(Selection.Rows.Count, Selection.Columns.Count).Select End Sub

naruue
質問者

お礼

ありがとうございました。 OKでした。

関連するQ&A

  • 移動のマクロ(エクセル)

    Selection.Cut Destination:=Selection.Offset(0, 1) 上記マクロで、選択領域にあるセルのデータを右に一セル分移動できますが、データだけでなく選択領域自体も同位置に移動させるには、どのような記述が必要になるでしょうか?

  • カット&ペーストのマクロ(エクセル)

    Sub test1() Selection.Cut Destination:=Selection.Offset(0, -1) Selection.CurrentRegion.Select End Sub Sub test2() Selection.Cut Destination:=Selection.Offset(0, 1) Selection.CurrentRegion.Select End Sub K1:N1が選択状態になっている時にtest1を実行すると、4つのセルが一セル分だけ左に移動します。 test1を連続してもう一回実行すると二セル分だけ左に移動します。連続して3回だと三セル分です。 が、test2だと、test1と同様に実行回数分だけ全体を右に移動させることができません。どうしてでしょうか? 実行回数分だけ全体を右に移動させるには、どういった記述が必要でしょうか?

  • マクロの変数のことで

    Sub test() Dim x As Range, y As Range Dim i As Integer i = 0 Set y = Application.InputBox("", "Paste", Type:=8)  For Each x In Selection   x.Cut y.Offset(i, 0)   i = i + 1  Next x End Sub 上記マクロは、選択されているセルを切り取って、指定したセルを基点として下方向に貼り付けるものです。 "i"の初期値を"1"にすると成功しますが、"0"だとエラーになります。"-3"などにすると、値がゼロになった時点でエラーになります。なぜ"i"がゼロになるとエラーになってしまうのでしょうか?  指定したセルを基点にして貼り付けられるようにするには、どうすればいいでしょうか?

  • エクセル マクロについて

    Sub Macro1() Set in1 = Application.InputBox(prompt:="入力範囲", Type:=8) i = in1.Offset(1, 0).Value Cells(1, 1).Value = i End Sub とするとエラーがでないのですが、 Sub Macro1() Set in1 = Application.InputBox(prompt:="入力範囲", Type:=8) i = in1.Offset(1, 0).Value Cells(1, 1).Value = i + 1 End Sub とするとエラーがでます。 i+1を表示するには、どう修正すればよいでしょうか。

  • エクセルのマクロのことで

    選択範囲を左右対称形でカット&ペーストするマクロを作成したいのですが。 F1あ    F2い  G2う F3え  G3お  H3か 上記でF1:H3を選択して実行すると、InputBoxに貼付け先を指定し、仮にD1を選ぶと以下の結果になります。         D1あ     C2う D2い       B3か C3お D3え     以下のマクロを作成しましたがうまくいきません。 rc = Selection.Rows.count cc = Selection.Columns.count Set pt = Application.InputBox("貼り付け先", "Paste", Type:=8) For j = 1 To rc For i = 1 To cc Selection.Offset(j - 1, i - 1).Cut pt.Offset(j - 1, 1 - i) Next i Next j 実行結果ですが。 InputBoxの指定先を基点に左右対称ではなくそのままの向きでカット&ペーストされます。 また、カット&ペースト処理のところでエラーになって止まってしまいます。 どこがおかしいのでしょうか? ご指摘お願いします。

  • Callステートメント(エクセル)

    Sub test()  Set x = Application.InputBox(Prompt:="テスト", Type:=8)   スクリプト    Call abc    Call def    Call ghi   スクリプト End Sub 上記マクロで、"x"が"Call"で指定したプロシージャ内でも使えるようにするには、どのような指定が必要になるでしょうか?

  • エクセルマクロでinputboxメソッドゼロ入力

    エクセル2007です。 以下のマクロで、inputboxメソッドで質問させると、キャンセルボタンを押すと、うまいぐあいに止まります。 しかし、0を押しても、止まってしまいます。本当は、C2にゼロと表示させたいのです。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1) If myR = False Then Exit Sub Range("C2").Value = myR End Sub

  • Excelで渦巻状にセルを移動するマクロを作りたいのです

    マクロで渦身状&時計回りにアクティブセルを移動させるにはどのように 記述したらよいでしょうか。 例えば、E16を選択しているときにマクロを実行したら E16→D16→D15→D14→E14→F14→F15→F16→F17→E17→D17→C17→… と移動していく感じです。 キーボード記録マクロで[↑][↓][←][→]キーで移動してみても何も記録 されなかったので、移動→黄色に塗りつぶし、という繰り返しを記録 してみると、文末のようにはなりました。が、渦巻き状に移動という アルゴリズムがさっぱり思いつきません。 無限でなく、例えば10周くらいまわれば十分です。 最終的には、移動するごとに、踏んだセルの値を評価(1だったら赤に塗る、 のように)していきますが、まずは選択セルを基点に渦巻状にセルを移動 する方法が知りたいです。 よろしくお願いします。 Sub Macro1() With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With Range("E16").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With Range("D16").Select With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid End With ' ■中略■ Range("C17").Select With Selection.Interior End Sub .ColorIndex = 6 .Pattern = xlSolid End With (ちなみに) エクセル上に、日本地図が碁盤目状に描かれています。 セルには、平野=1、山=2、海=3のように記述されています。 これを特定法則で塗り分けるのに利用します。

  • エクセルのマクロ

    Sub test() Dim x As Range  For Each x In Selection    If x.Value <> "●" And Selection.Font.ColorIndex = 0 Then    x.Value = "○"  End If Next End Sub 上記は、選択されているセルのフォントが黒でかつ"●"が入力されていない場合は"○"を入力する、というマクロですがうまく動作しません。どうすれば正常に動作するようになるでしょうか?

  • エクセルのマクロについて

    行を選択し、関数を数値に変換するために下記のようなマクロを作成しました。 選択する行数が少ないと実行でるのですが、一度にたくさんの行を選択すると下のようなエラーが返されます。 「実行時エラー"424"」オブジェクトが必要です。 どこが間違いなのか教えて頂ければ助かります。 Sub TextValue() '選択された行範囲をデータに変換します。 Dim rc As Integer Dim rngCell As Range Dim sMsg As String rc = MsgBox("データに変換しますか?", vbOKCancel) If rc = vbCancel Then Exit Sub sMsg = "変換する範囲を選択して下さい。" Set rngCell = Application.InputBox(Prompt:=sMsg, Type:=8) rc = MsgBox("選択されている範囲の関数を" & vbCrLf & "データに変換します。" & vbCrLf & _ "選択された行範囲は " & rngCell.Address(0, 0) & vbCrLf, _ vbOKCancel, "処理を確認してください。") If rc = vbCancel Then Exit Sub rngCell.Select Selection.Value = Selection.Value End Sub Excel2002  OSはXPです。 宜しくお願い致します。

専門家に質問してみよう