VBA 現在コピーモード中のセルだけを、再度コピーモードにする方法

このQ&Aのポイント
  • VBAを使用して、現在コピーモード中のセルだけを再度コピーモードにする方法を知りたいです。
  • 実行後に選択されているOffset(-3, 0)の範囲を避け、再度(A20:B30)の範囲だけをコピーモードにしたいです。
  • Set r = Selectionなどを使用することで、目的を達成できるのでしょうか?ご教示いただけますと助かります。
回答を見る
  • ベストアンサー

VBA 現在コピーモード中のセルだけを、再度コピーモードにするには?

VBA 現在コピーモード中のセルだけを、再度コピーモードにするには? Windows XP Home Edition SP3 Office XP Personal 2002 Excel 2002 下記コード実行で、Offset(-3, 0) が選択されてしまいます。 実行後、下記の Offset(-3, 0) の選択をなくして、 再度 (A20:B30) だけを コピーモードにしたいのですが、うまくいきません。 Offset(-3, 0) の選択はどのようにすればなくなりますか。 Offset(-3, 0) が選択されておりますと、次の作業の、他の別のVBAがうまく動作しないのでございます! Set r = Selection などを使用すればよいのでしょうか? 何卒、ご教示のほどをお願い致します。 Sub 再度コピーモードに()   Range(A20:B30).Copy    Application.Goto Selection.Cells(1).Offset(-3, 0), True   CopyMode.Cells.Copy '←ここの編集がわかりません End Sub

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

sub macro1()  dim Target as range  set target = selection  application.goto target.cells(1).offset(-3, 0), true  target.select  target.copy end sub といった事をしたいのでしょうか。 それともこんな感じでも良いのかもしれません? sub macro2()  application.goto selection, true  activewindow.smallscroll up:=3  selection.copy end sub #上に3つあがれない場所からでも,エラーにならないおまけ付きです。

oshietecho-dai
質問者

お礼

早速のご回答、誠に有難うございました。 大変に、恐れ入ります。 基本が頭に入ってなくて、申し訳ありませんでした。 基本が一番、難しいようにも思えます。 >target.select ここで、再度行うのですね。 おまけも、どうも有難うございました。

関連するQ&A

  • 【VBA】シートのコピー ~ 値に直す

    大変お世話になります。 VBAのコードについてご教示いただけませんでしょうか。 ■やりたいこと -------------------------------------------------------------------------------- (1) 【原紙】Sheetを、同ブック内の新規シートへコピー (2) 新規シートのシート名を、[セル:B5]の値に変更 (3) 新規シートにコピーされてきた数式を値に変更 ■作成してみたコード -------------------------------------------------------------------------------- Sub SheetCopy1() Worksheets("【原紙】Sheet").Copy Before:=Worksheets("【原紙】Sheet") ActiveSheet.Name = Range("B5").Value Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End Sub -------------------------------------------------------------------------------- 本日初めてVBAに触れた者が、見よう見まねで『■やりたいこと』を並べたコードのため、やはりエラーになってしまいます。 上記は、どこをどう直せばよろしいでしょうか。 もしくは、そもそも間違っておりますでしょうか。 ご教示いただきたく、何卒よろしくお願いいたします。 ◎もし可能でしたら、併せてご教示ください◎ ---------------------------------------------------------------------------- (1)の動作をさせるために、【原紙】Sheetの任意の場所に”ボタン”を設置するのですが、新規シートにもコピーされるため、そのコピー側のボタンを削除できたら…とも考えていますが、そういう動作も可能でしょうか。

  • セルをコピーしてシート名を取得 【VBA】

    こんばんわ。 エクセルのVBAについて、どうしてもわからなくなったので質問させて下さい。 マクロの内容は 1.一番前のシート(名前はSheet1ではありません。)のボタン35をクリック 2.シートをコピーして3番目に置く。 3.値にする。 4.シート名をセルの"DE16"に入っている値にする。 5.ボタンを消す。 以下の内容になりましたが、名前のところでデバックがおこります。 Sub ボタン35_Click() Worksheets(1).Select Worksheets(1).Copy After:=Sheets(3) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Worksheets(3).Select Worksheets(3).Name = Range("DE16").Value ActiveSheet.Shapes("Button 11").Select Selection.Delete Application.CutCopyMode = False End Sub どなたかお知恵を貸して下さい。

  • VBA EXCEL セルのコピーについて

    Range(Cells(PRow + SERVICE_ROW, 2), Cells(SRow, 40)).Select Selection.Copy Destination:=Range(Cells(PRow, 2), Cells(A, 40)) このような形で変数を使いセルの値のコピーし、貼り付けたいと思っています。 貼り付ける場所にも変数を使いたいのですが、 Aの部分が可変で値を設定できません。 Range("B2")みたいな意味でRange(Cells(Prow,2))みたいな感じでスタートだけ設定して貼り付けることはできないのでしょうか?

  • エクセルVBAで行のコピー貼り付けについて

    初心者、勉強中でエクセル2007です。 A1行からK40行までの表があります。 これを下にコピーをしながら増やしていってるのですが、マクロでしようと思い下記のとおり 考えました。 selecion.row.Offset(39, -1).Select ここでオブジェクトが必要ですと出ます。 それからその下の?とを色々ぐぐってみますがどうしてもわかりません。 それと2007ですので65536行ではないのですが、MaxRow = Cells(Rows.Count, 1).End(xlUp).Row だと動かないみたいですので下記としています。 よろしくご教授お願いします。 Sub Gcopy() MaxRow = Range("B65536").End(xlUp).Offset(-39, -1).Select データの入ってる最終行を取得 Selecion.row.Offset(39, -1).Select 選択された行から上に39行移動し選択 ?                    下へ39行まで選択   MaxRow = Range("B65536").End(xlUp).Offset(1, -1) 最終行を取得 ActiveSheet.Paste 貼り付け End Sub

  • 【VBA】コピー&複数個所のペースト繰り返し

    下記のように、1つの値をコピーし、別シートの複数個所(同じ列の違う行)へ順次ペーストしたいのですが、貼付けデータやペースト箇所が増えた場合でも対応できるようなVBAを教えてください。 よろしくおねがいいたします。 ========================================================= Sub コピペ() '←1人目をコピー Worksheets("“コピー元シート”").Range("B7").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B9", "B37", "B65", "B93", "B121", "B149", "B177").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←2人目をコピー Worksheets("“コピー元シート”").Range("B8").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B11", "B39", "B67", "B95", "B123", "B151", "B179").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←3個の値をコピー Worksheets("“コピー元シート”").Range("B9").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B13", "B41", "B69", "B97", "B125", "B153", "B181").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←4個の値をコピー Worksheets("“コピー元シート”").Range("B10").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B15", "B43", "B71", "B99", "B127", "B155", "B183").Select Selection.PasteSpecial Paste:=xlPasteFormulas '←5個の値をコピー Worksheets("“コピー元シート”").Range("B11").Select Selection.Copy '←貼付け Worksheets(“貼付シート”).Range("B17", "B45", "B73", "B101", "B129", "B157", "B185").Select Selection.PasteSpecial Paste:=xlPasteFormulas End Sub

  • 空白セルと0値を識別させたい。(VBA)

    すみません、誰か教えていただけますか。 シートの53、54、55行目にそれぞれ値入っています。 それを3行目にビジュアル的に表現させています。 55行目はセルの色で、53行目は数値があり同じ値が 続く部分の合計を出しています。 しかし、下記の記述ですと数値が0(変数D=0)の時に うまくいきません。空白セルと認識されてしまうと思います。 何か、良い方法があれば教えて頂けませんでしょうか。 宜しくお願いします。 Sub 表示() Dim a As Long Dim c As Long Dim D As Long Dim e As String Dim f As String c = 3 For a = 3 To 64 With Worksheets("Sheet1") If .Cells(53, a) <> .Cells(53, a + 1) Then .Range(.Cells(53, c), .Cells(53, a)).Select D = WorksheetFunction.Sum(Selection) e = D f = Selection(1).Offset(1, 0).Value G = Selection(1).Offset(2, 0).Value If D <> 0 Then Selection(1).Offset(-50, 0).Value = f + "//" + e .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.Interior.ColorIndex = G End If If Selection(1).Value = "" Then .Range(.Cells(53, c), .Cells(53, a)).Offset(-50, 0).Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone End If c = a + 1 End If End With Next End Sub

  • エクセルVBAで複数セルをコピーの制御構文

    エクセルVBAで A8~I8のセルをコピーしてJ7~R7にコピーし、2行下に移り空白セルまで繰り返すという 処理をしたいと考えています Sub copy() Dim i As Integer i = 7 Do Until Cells(i, 1) = "" Cells(Cells(i,10),Cells(i,18).Value = Cells(Cells(i+1,1),Cells(i+1,9).Value i = i + 2 Loop End Sub と作ってみたところエラーで動きませんでした。 上記のプログラムはどこら辺がおかしいでしょうか? よろしくお願いします。

  • excel VBA 緑色の付いたセルをすべてコピー

    お世話になります。excel2007です。 緑色の付いたセルをすべてコピーするマクロを作成したいのですが・・・ マクロの記憶の実行 検索(ctrl + F) ⇒ オプションでセルを緑 ⇒ すべて検索 ⇒ 検索結果をすべて選択(ctrl + A) ⇒ 検索を閉じる ⇒ コピー(ctrl + C) マクロの記憶の終了 エクセル上ではしっかりコピーできています。 VBAは以下の通りでした Sub 緑色のセルをすべてコピー() ' 緑色のセルをすべてコピー Macro    With Application.FindFormat.Interior     .PatternColorIndex = xlAutomatic     .Color = 5287936     .TintAndShade = 0     .PatternTintAndShade = 0    End With    Selection.Copy End Sub このマクロを実行しても、現在選択されているセルを コピーしてしまいます(緑色を検索してくれないです)。 どのようにVBAを編集すればよろしいのでしょうか??

  • テキストボックスにコピーするマクロ

    エクセルのA1にある文字列の先頭から2番目の文字を、テキストボックスにコピーするマクロのことですが。 Sub copy()  Cells(2, 1) = "=MID(A1,2,1)"  Selection.copy  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _  SkipBlanks:=False, Transpose:=False  ActiveSheet.Shapes("Text Box 4").Select  Selection.Characters.Text = Cells(2, 1) End Sub 上記のもので成功しますが疑問に思うことがあります。 Cells(2, 1) = "=MID(A1,2,1)" の次の行に Cells(2, 1).Select を置くと、実行後に A2 には関数が残らず数値しか存在しなくなります。どうしてでしょう? (コピー → 形式を選択して貼り付け を手作業でやる時は関数は残るのに) また、上記よりも簡潔なマクロがあれば教えて下さい。

  • VBAが突然使えなくなったのは何故でしょうか?

    Windows8.1で、Office2010を利用しています。 エクセルのVBAを使って以下のようなコピーを行っているのですが ある日、突然、『貼り付ける位置を指定してください。』という メッセージが画面下に出るようになり、コピーできなくなりました。 i=10:w=64 Range(Cells(i, 1), Cells(i, 8)).Select Selection.Copy Range(Cells(w, 1), Cells(w, 8)).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _      SkipBlanks:=False, Transpose:=False 何が問題なのでしょうか? ちなみに、WindowsUpdateの関連で、VBAがエラーになったことがあるので Excel8.0フォルダの中に入っているmsforms.exdファイルを一旦削除してから 再起動し、再度、上記のコピー作業を試みましたが メッセージが出てしまい、コピーはできませんでした。 よろしくご指導願います。

専門家に質問してみよう