• ベストアンサー

指定するセルのRange書き込み変更

Sub 移動と削除() Range("A1").Select Selection.Cut Destination:=Range("E1") Range("A1").Select Selection.Delete Shift:=xlUp End Sub 自動マクロで作った上記の記録があります。これをA1固定ではなくA列の指定するセルにし E1もA列で指定したセルと同じ行のE列にしたいのですが書き換える方法をおしえてください。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

ANo3の補足を見ました。 > ありがとうございます。 そう思ったら「補足」ではなく「お礼」に書いた方が良いです。 補足ではわたしのところに通知がこないのであなたが書き込んだ追加質問をたった今まで知りませんでした。 > この中でA列と指令しているのはどこなんでしょうか?C列に変えたりB列からD列までを指定したりに変更することは可能ですか、可能な場合にはどの部分を替えたらよいのでしょうか? If Target.Column <> 1 Then Exit Sub です。 Columnは列です。ここが1列目じゃなければマクロは終了します。 C列に変えるなら If Target.Column <> 3 Then Exit Sub B列からD列までを指定するなら If Target.Column > 4 Or Target.Column < 2 Then Exit Sub > 私の書いた自動マクロでは変更はできないのでしょうか? 指定したセルを変えることはできるでしょう? > 回答いただいた言語の理解はできないレベルの者です。質問の程度のレベルの勉強するにはmerlionXXさんの経験上から推薦できる手段をご指示戴けるとありがたいです。 一応、ご参考のため先日のコードに解説をつけておきます。 下記でTargetとはダブルクリックしたセルのことです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'ダブルクリックイベントマクロ   If Target.Column <> 1 Then Exit Sub '1列目じゃなければマクロ終了   Target.Copy Destination:=Cells(Target.Row, "E") 'Targetをコピーし同じ行のE列に貼る   Cancel = True 'ダブルクリック状態を解除   Target.Delete Shift:=xlUp 'Targetを削除 End Sub 本屋に行けばいくらでもエクセルVBAのテキストは売ってます。 それを読んで、試してみて、それでわからないことはここで質問すればいいんじゃないですか。

tigira
質問者

お礼

ご指導ありがとうございます。投稿の仕方もありがとうございます。そして御礼が遅れた事もすみませんでした。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

1. 該当のシートのタブを右クリックして、[コードの表示]。 2. 出てきた白い所に、以下のコードを貼付けます。 '********これより下********** Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Column <> 1 Then Exit Sub   Target.Copy Destination:=Cells(Target.Row, "E")   Cancel = True   Target.Delete Shift:=xlUp End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 これでOK A列のお好みのセルをダブルクリックする都度、自動で実行されます。

tigira
質問者

補足

ありがとうございます。 素早くできて快適です。さらに次のことも教えていただけますか この中でA列と指令しているのはどこなんでしょうか?C列に変えたりB列からD列までを指定したりに変更することは可能ですか、可能な場合にはどの部分を替えたらよいのでしょうか? 自動マクロの記録まではできるようになったのでこれを任意のセル選択で実行するように変更する方法を知りたかったのですが私の書いた自動マクロでは変更はできないのでしょうか?回答いただいた言語の理解はできないレベルの者です。質問の程度のレベルの勉強するにはmerlionXXさんの経験上から推薦できる手段をご指示戴けるとありがたいです。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

行だけ指定したい場合は Dim Select_Row As String Select_Row = InputBox("行の指定", "行の指定") Range("A" & Select_Row).Select Selection.Cut Destination:=Range("E" & Selection.Row) Range("A" & Select_Row).Select Selection.Delete Shift:=xlUp にしてください。

tigira
質問者

補足

ご指導ありがとうございます。 InputBoxに入力せずにマウスポインターで指定行をクリックして行えるようにはできませんでしょうか。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

たとえば Sub 移動と削除() Dim Select_Range As String Select_Range = InputBox("セルの指定", "セルの指定") Range(Select_Range).Select Selection.Cut Destination:=Range("E" & Selection.Row) Range(Select_Range).Select Selection.Delete Shift:=xlUp End Sub こんな感じですが、入力したデータが不正なときのエラー処理はしていませんので、その部分は適宜作成してください。

関連するQ&A

  • エクセルマクロで行を変えて千回カット&ぺースト

    下記のコードでB,C,D・・・と行を1,000回変えて同じ作業をしたいのですが、どのようにしたらよいか分かりません。 どなたかお詳しい方アドバイスをお願いします。 Range("A18:A32").Select Selection.Cut Destination:=Range("B3:B17") ←B,C,D・・と変えてカットしたい。 Rows("18:32").Select Selection.Delete Shift:=xlUp Range("A18:A32").Select Selection.Cut Destination:=Range("C3:C17") Rows("18:32").Select Selection.Delete Shift:=xlUp Range("A18:A32").Select Selection.Cut Destination:=Range("D3:D17") Range("D3:D17").Select End Sub

  • csvファイルを取り込み指定の形式にする

    EXCELでcsvファイルを取り込み指定の形式にして、csvファイルとして 保存するマクロを組みたいです。 途中までマクロの記録機能を使い作ったものです。 Sub csvファイルの取り込み() 'Windows("a.csv").Activate '←ここでファイルを選択する形式にしたい。 Columns("C:H").Select Selection.ClearContents Columns("A:A").Select Selection.Delete Shift:=xlToLeft Range("A1").Select ActiveCell.FormulaR1C1 = "Number" Rows("2:2").Select Selection.Delete Shift:=xlUp Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>C*", Operator:=xlOr, _ Criteria2:="=C1*" ', Operator:=xlOr, Criteria2:="=AABC*" Rows("4:13").Select '←ここをフィルタで選択された行を削除するように変更したい。 Selection.Delete Shift:=xlUp Selection.AutoFilter Field:=1 Range("A1").Select End Sub マクロの流れとして ・まずcsvファイルを取り込む ・C列からH列までを削除(もしくは数値をクリア) ・その後、A列を削除 ・A1セルに文字があるのでその文字を"Number"に変更 ・A列にある指定の文字列をフィルタで抽出してその行を削除  (抽出文字列は以下の3パターン。) Cで始まらない文字を抽出 or C1で始まる文字を抽出 or AABCで始まる文字を抽出 ・以上の作業を終了したら取り込んだファイル名の 左から11文字+"ABC"の文字をあわせてファイル名として CSVファイルで保存する 長くなってすいません。助けてください

  • マクロでエクセルの行を準に削除したいのですが…(;_;)

    エクセルのマクロを使って Range("D3:E3").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp Range("D4:E4").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp という風に3000個ほど順番に消していきたいのですがfor...nextを使うと for I = 3 to 3000   Range("DI:EI").Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp nest I となってこれを実行するとDIのセルに飛んでしまいます。どうしたらいいのですか?教えて下さいお願いしますm(_ _)m

  • エクセルVBAで空白セルを削除する方法

    みなさん教えてください。 今エクセルVBAで、下記のようにのA列に空白セルがある場合にそのセルを削除し、 空白セルが無い場合何もしないと言うマクロを作っています(下記のように自動記録し ました)。 しかし、作成したマクロは、下記のようにA列に空白セルがない場合はエラーが出てし まいます。 空白セルが無い場合エラーが出ない方法を教えて頂けないでしょうか。 よろしくお願いします。 <マクロ> Sub Macro1() Columns("A:A").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.SpecialCells(xlCellTypeBlanks).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End Sub <データ> A --------- 1 2 1 1 1 3 4 ・ ・ ・ (以降約300行続きます)

  • VBAで関数式の値をセルに入力できるようにしたい。

    こんなマクロをマクロの記録で作ったのですが SUMIF関数の数式をセルに入力するのでなく 値だけを入力するしたいのですがどのように すればいいでしょうか? Sub Macro4() Columns("O:O").Select Selection.Insert Shift:=xlToRight Range("N3").Select Selection.AutoFill Destination:=Range("N3:O3"), Type:=xlFillDefault Range("N3:O3").Select Range("O5").Select ActiveCell.FormulaR1C1 = "=SUMIF(出荷貼付け!C1,RC1,出荷貼付け!C5)" ←ここのところを値だけをセルに入力したい。 Selection.AutoFill Destination:=Range("O5:O978") Range("O5:O978").Select Range("O4").Select End Sub

  • VBAで指定範囲内の空白セルを左詰めで一括削除したいのですが

    エクセルで作成した表中に測定結果を集約し、管理しております。 測定を行った際に得られる数値を項目毎に対象列のセルへ集積しているのですが、 測定を行っていない項目のセルは空白となるため、空白セルを左詰めで一括削除したく望んでおります。 下記のようにマクロの記録を使用してコードを取得し、実行してみたのですが、エラーになってしまいます。 Private Sub CommandButton1_Click() Sheets("A").Select Range("B:AH").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.Delete Shift:=xlToLeft Range("A1").Select End Sub 対象範囲(列)はB列からAH列としておりますが、測定項目が増えると記載列も増えますので、 範囲を柔軟に変更出来るような方法で希望しております。 お手数ですがご教授いただけませんでしょうか? 宜しくお願い致します。

  • 【Excel2013】特定のセルを指定したくない

    下記マクロはD8:D80までのセルに入力されている文字を「文字列」にするマクロです。 Range("D8:D80").Select Selection.TextToColumns Destination:=Range("D8"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 2), TrailingMinusNumbers:=True Range("D8").Select End Sub 同じ作業を他のセルでも実行することが多々あるため、文字列にしたいセルを選択した状態でマクロを実行したいのです。 どのように設定すればよろしいのでしょうか?

  • エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の

    エクセルのマクロで範囲指定をセルに番号を入れて、範囲指定したセルの字の色を白にして消したいのですが、番号を入れるマクロがわかりません。マクロに記録でA2からB12までのセル内の字の色を白 にする方法は Sub 字を消す() ' ' 字を消す Macro ' ' Range("A2:B11").Select With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With End SubでできるのですがD3に開始番号、E3に終了番号を指定する方法がわかりません。ご教授お願いします

  • 同じ場所にあるファイル全てに対してマクロをかけたい

    <やりたいこと> マクロと同じフォルダに入っている全ファイル(そのときによりファイル数が変わる)に対し、 1、2行を削除し、オートフィルタを消し、A2にある「No.1」を「No1」(ドットを消す)にし、 ファイルを上書き保存するようにしたいです。 <今の状態と質問> 全ファイル(例は4つ)を開いた状態で下記のマクロをかければ、 希望の処理ができます。 が、複数ファイルが有る場合、ファイル全てを開いて実行するのは難ありです。 事前にファイルを開く手間をかけずに、マクロで全て処理する方法は どうしたらいいのでしょうか。 過去検索で、Workbooks.Open Filename:= (ThisWorkbook.Path & "\*.xls")などを 見よう見真似で追加したりしてみたものの動きませんでした。 今の段階(4ファイル開いておけば実行可能)のマクロは下記の通りです。 Sub test() ' ' Keyboard Shortcut: Ctrl+q ' Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • 全てのワークシートのレイアウト変更について

    いくつも全く同じレイアウトのエクセルシートがあります。この全てのシートのレイアウトをいっぺんに全く同様なレイアウト変更(ある場所のセル内容を別の場所にカット&ペーストで移したい)したいのですが、マクロでどう書けばいいかお教え下さい。シート名を一つ一つ指定するやり方では実行できましたが、問題は一つのファイルのワークシートの数は毎回変更されるところです。因みにワークシート名(タブの部分)のネーミングルールは同じです(Plan(1), Plan(2)....Plan(n)となります)。以下に一つ一つ指定した場合のマクロを載せます。宜しくお願いいたします。 Sheets("PLAN(1)").Activate Rows("29:31").Select Selection.Delete Shift:=xlUp ActiveWindow.LargeScroll ToRight:=-1 Range("j3:q28").Select Selection.Cut Range("a29").Select ActiveSheet.Paste Range("Q23").Select Sheets("PLAN(2)").Activate Rows("29:31").Select Selection.Delete Shift:=xlUp ActiveWindow.LargeScroll ToRight:=-1 Range("j3:q28").Select Selection.Cut Range("a29").Select ActiveSheet.Paste Range("Q23").Select 以下、同様です。

専門家に質問してみよう