No.3ベストアンサー
- 回答日時:
No.1です。
>アクティブセルの下1右5のセルを含めた8セルをカットし、
>アクティブセルの下4右2のセルでペーストさせます。
>回答頂いた中では(1)に近いです。ただ、移動するセルは複数(8個)です
というコトですので、
8個とは列方向に向かって8個
仮にActiveセルがA1だと Offset(1, 5) はF2セルになりますので、
F2~M2セルデータを Offset(4, 2) → C5セルにコピー&ペーストです。
Sub Sample1()
With ActiveCell
.Offset(1, 5).Resize(, 8).Cut .Offset(4, 2)
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
ありがとうございます。
・Resizeの使用
・destinationは不要
ということですね。次回これで試してみます。
質問の後で、結局とった対策は、
activecell.offset(1,5).range("A1:F1").select
selection.cut destination:=activecell.offset(省略)
一旦セレクトしておいて、次にカット&ペーストするとなぜか動きました。
No.4
- 回答日時:
#2の回答者です。
>destination:=の有無になりますが、無くても出来るのですね。
なぜ、省いたかというと、画面上で、右に長くなりすぎるので、桁折したのですが、その時に、Destination:= が入っていると、今回の場合、エラーになることがあるからです。
>カットアンドペースト以外の方法はあるのでしょうか?配列に読み込んでから移動先セルに書き込むのですか?
VBAのコーディングで、普通は、必要な箇所をコピーして、張り付けした後に、不要な部分を削除するという方法を取ります。もちろん、配列という方法があることにはあるのですが、それは、私としては、やむを得ない場合に限ります。ここでは、配列による、Value(または、Text)値だけのコピーというのをあえてする必要性はないと思います。
なお、#2のコードで、飛び飛びにする場合は、For i= 1 To 最終数 Step 2
となどに書き加えます。
No.2
- 回答日時:
こんにちは。
ご質問のマクロは、記録マクロからですね。
それも、「相対参照」になっていますから、意図的でなければ、設定を、「絶対参照」にして記録してください。それと、Cut & Paste マクロは、Excelのバージョンによっては、理由なくエラーが出ることがあります。ですから、長年、VBAを書いている人は、Cut & Pasteのコードは滅多に書きません。
ただ、
>うろ覚えですが「○○定義エラー」
質問では、うろ覚えではなく、正確なエラーの内容を書いてください。再現性があるのかないのかの判定もします。再現性のない場合は、ご自身の、Excelのワークシートの環境的な問題だと思ってください。
今回の質問は、Excelのバージョンなど示されていませんので、今のところ再現性は確認できません。
ActiveCell.Offset(1,5).Range("A1:H1")
という表記の仕方は、見慣れない方もいるようですが、これは記録マクロの相対参照モードにしか登場しないコードです。
これは、問題ないといえば問題ないのですが、貼り付け先が実際にはないところにもマクロを実行しようとしてしまいます。その場合は、エラーはあるはずです。
後は、ちゃんとVBAを段階的に学習つもりがあるのでしたら、別の回答にもなりますが、手っ取り早く解決したいのでしたら、記録マクロを質問で公開するよりも、どのようにしたいのか、きちんと言葉で説明されたほうがよいと思います。ここの回答者さんが、あらためてコードを書いてくれるはずです。
例えば、アクティブセルが、A1にあるとして、10行続けようとすれば、このようにはなりますが、ここでも、どこを基点にするかというものが、重要になってきます。
'//
Sub Test1()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Select '←ここが基点(最初はA1)
ActiveCell.Offset(1, 5).Range("A1:H1").Cut _
ActiveCell.Offset(4, 2).Range("A1")
Next i
End Sub
'//
これを、標準モジュールに書くようにします。
ありがとうございます。
同じ処理を大量に繰り返すため(10回×100回×200回)、相対参照で記録しました。回答頂いたソースコードではiを使って基準点を移動しますが、自動マクロで作った時は1個のプロシージャの最終行で基準点移動し、このプロシージャを繰り返すようにしてます。
回答のソースコードと質問文の最大の違いはdestination:=の有無になりますが、無くても出来るのですね。私自身、カットアンドペーストをマクロで作るのは初めてで、最初は自動マクロで作り、動作時間短縮のためネットで検索して変更しました。
カットアンドペースト以外の方法はあるのでしょうか?配列に読み込んでから移動先セルに書き込むのですか?
No.1
- 回答日時:
こんにちは!
両辺とも「主語」がダブっていて、どういったコトをしたいのか見えてこないのですが・・・
(1)選択セルから1行下・5列右側セルを選択セルの4行下・2列右側セルにカット&ペーストしたい場合
With ActiveCell
.Offset(1, 5).Cut .Offset(4, 2)
End With
(2)A1~H1セルを選択セルから4行下・2列右側セルにカット&ペーストしたい場合
Range("A1:H1").Cut ActiveCell.Offset(4, 2)
(3)A1~H1セルをA1セルの4行下・2列右側セルにカット&ペーストしたい場合
Range("A1:H1").Cut Range("A1").Offset(4, 2)
といった感じになりますが、
いずれにしても左辺の「主語」は
ActiveCell.Offset(1, 5) なのか Range("A1:H1") なのか?
右辺の「主語」は
ActiveCell.Offset(4, 2) なのか Range ("A1") なのか?
ひとつに決めてやらないとエラーとなります。m(_ _)m
ありがとうございます。
アクティブセルの下1右5のセルを含めた8セルをカットし、アクティブセルの下4右2のセルでペーストさせます。回答頂いた中では(1)に近いです。ただ、移動するセルは複数(8個)です。
当初自動マクロで作りましたが、修正したら動かなくなったというのが背景です。
ActiveCell.Offset(1, 5).Range("A1:H1").select
selection.cut
activecell.offset(3,-3).Range("A1").Paste
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Excel(エクセル) 【VBA】A列にある連続したデータの1番下に文字列を入力したい 1 2023/01/28 04:40
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
エクセルのセルの枠を超えて文...
-
エクセル オートフィルタで絞...
-
エクセルの一つのセルに複数の...
-
Excel2003 の『コメント』の編...
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
貼り付けで複数セルに貼り付けたい
-
Excel 例A(1+9) のように番地の...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
EXCEL VBA セルに既に入...
-
エクセルでオブジェクトを常に...
-
数式を残したまま、別のセルに...
-
エクセルの書式設定の表示形式...
-
(Excel)数字記入セルの数値の後...
-
excelの特定のセルの隣のセル指...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
Excelで数式内の文字色を一部だ...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
エクセル 足して割る
-
excelのCOUNTIF関数で、『範囲=...
-
EXCEL VBA セルに既に入...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
【Excel】 セルの色での判断は...
-
Excel2003 の『コメント』の編...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
複数のセルのいずれかに数字が...
-
枠に収まらない文字を非表示に...
-
excelの特定のセルの隣のセル指...
おすすめ情報