質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

856閲覧

EXCEL上でセルを移動させてコピーしたいのですがそのような働きはなんという語句で調べれば良いのかご助力頂きたい。

ma2hiro

総合スコア159

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/11/19 01:14

お世話になっております。

とあるEXCELで作成したグラフをVBAにて拡張したいと思っております

excel

1__________ 2|  |  | 3|  |  | 4|  |  | 5----------

excel

1______________ 2|  |  |  | 3|  |  |  | 4|  |  |  | 5--------------- 6

実行すると表が増える上記のようなイメージです。

それで7行目は項目で埋まっているので

”F7”セルを選択してCtrl+→ で右端に移動した後 そこから上に2つ移動後 Shiftを押下しながら左に4つ選択後 shiftを押下しながら下に24選択し それを「コピーした挿入貼り付け」(右方向にシフト)

という作業をVBAで出来ないかと思っております。

それでまず
”F7”セルを選択してCtrl+→ で右端に移動というのを

vba

1Cells("F7").End(xlToRight).Select

と実装したつもりなのですが

実行時エラー '5' プロシージャの呼び出し、または引数が不正です。

と表示されてエラーでした。

そこでなんという語句でググれば上記のエラーに対応出来て

そこから上に2つ移動後 Shiftを押下しながら左に4つ選択後 shiftを押下しながら下に24選択し それを「コピーした挿入貼り付け」(右方向にシフト)

のような働きをVBAで実装出来るか伺ってよろしいでしょうか?

お忙しい所大変申し訳ないのですが何か情報をお持ちな方はコメント頂けますと嬉しく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/11/19 01:44 編集

その動作をマクロで記録して出来上がったコードを確認にすれば良いと思うのですが。 それに「やりたいこと」にキーワードが入ってますし、エラー解決もエラーメッセージがそのままキーワードです。
退会済みユーザー

退会済みユーザー

2021/11/19 01:51 編集

自身ではどういうキーワードで調べたんですか?聞く前に、まず自分で考えた方がいいですよ。 全部人に聞いてると、考える力や応用力が身に付かないです。 [1-2. 投稿前に検索し、できるところまで自分でやってみましょう] https://teratail.com/help/question-tips#questionTips1-2 自分の質問で機能的に疑問な部分を単語にして、それらを言語名(VBA)と合わせてキーワード検索するだけでも、それっぽい記事が割と引っかかります。 あまり引っかからなかったら単語の表現を変えてみる、ノイズが多かったら絞り込むキーワードを増やしてみる等も試してみることです。
ma2hiro

2021/11/19 01:53

本当に申し訳ないです…… ”vba セル移動”にてグーグルさんで調べてみましたが このままだと質問投げっぱなしと思われても仕方がないですね…… なのでどのような語句でググれば良いかと伺ったつもりだったのです…… 丸投げ質問のような事はやめます。 大変申し訳ございませんでした。
退会済みユーザー

退会済みユーザー

2021/11/19 01:59 編集

自分の質問だけ見ても、もっと単語沢山ありますよね。 いきなりゴールまでたどり着くのが無理なら、もっと細分化して調べましょう。
m.ts10806

2021/11/19 02:01

いえ、語句を聞く質問が悪いわけではなく、一気に全部解決できるスペシャルワードのみを求めている印象で、自身がどういうキーワードを採用したのかが書かれてないのが問題です。 それに自分がやりたいことそのママをやってるようなことってまずないので、細分化して探して組み合わせる地道な道しかないです。 エラーが出たなら解決するためにまた調べる。 熟練者もその繰り返しで1つのアプリケーションを組み上げます。
guest

回答2

0

ベストアンサー

Excelに「マクロの記録」という機能があるので、今回の場合は格好や効率を気にしなければそれで事足りそうです。
素直に書くなら以下のようになるかと

VBA

1'”F7”セルを選択してCtrl+→ で右端に移動した後 2Range("F7").End(xlToRight) 3 4'そこから上に2つ移動後 5Range("F7").End(xlToRight).Offset(-2,) 6 7'Shiftを押下しながら左に4つ選択後shiftを押下しながら下に24選択し 8'Resizeは上、左方向への拡大は出来ないのでOffsetで始点を動かす 9Range("F7").End(xlToRight).Offset(-2,-4).Resize(24,4) 10

検索する場合は、「VBA セル移動」ですとか「VBA 範囲変更」などで出てきます。

投稿2021/11/19 01:47

Usirow

総合スコア364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/11/19 02:00

Usirow様 ありがとうございます。 「VBA セル移動」と「VBA 範囲変更」でググって調べてみます。 本当にありがとうございました。
退会済みユーザー

退会済みユーザー

2021/11/19 02:12 編集

マクロの記録で保存されたマクロに対して編集でコードを覗いてみて、どういった処理が行われているかを見て、そこで使われている関数を検索する、などすれば理解の助けになるかもしれません。
ma2hiro

2021/11/19 03:46 編集

radian様 コメントありがとうございます。 ”マクロの記録”でグーグルさんで調べてみたら [Excelマクロ初心者に「マクロの記録」を勧めない2つの理由](https://diamond.jp/articles/-/256894#:~:text=%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E8%A8%98%E9%8C%B2%E3%81%A8%E3%81%AF,%E3%81%AA%E3%81%8F%E3%80%81%E6%89%8B%E8%BB%BD%E3%81%AB%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99%E3%80%82) がひっかかり初心者に勧めないとか書いてあったのですが そんな事はないようなのでコードを覗いてみます。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2021/11/19 04:22 編集

マクロの記録を使うと無駄のあるコードが生成される場合もあるから、記録したマクロをそのまま使うなという事だと思います。ただ、マクロの動作の仕組みを知るためには十分使えるので、何が無駄な処理か、どう直せば効率的になるかを自分で判断できれば、レベルアップ出来るでしょう。
ma2hiro

2021/11/19 04:29

度々ありがとうございます。 >マクロの動作の仕組みを知るためには十分使えるので、何が無駄な処理か、 >どう直せば効率的になるかを自分で 判断して使ってみようと思います。 コメントありがとうございました。
ma2hiro

2021/11/25 07:29

ちなみに先程ですが Range(c1, c2).Delete では消えなくて マクロの記録をやってみて Range(c1, c2).Select Selection.ClearContents とやっている事を確認しました。 radianさんのコメントを実装して解決出来たので 備忘録としてコメントいたします。
Usirow

2021/11/25 23:59

DeleteとClearContentsは全く違う処理になります。 ClearContentsはセルの中身を空にするだけですが、Deleteはセルそのものを消去し上か左方向に詰める操作になります。(右クリック→削除と同じ操作) またマクロの記録を使ったときによくあることですが、その処理は Range(c1,c2).ClearContents と一行にまとめた方がコードが短く、余分なSelectがないため動作もはやいです。マクロの記録をそのまま使わないとはそういうことだとおもいます。
ma2hiro

2021/11/26 02:11 編集

Usirow様 マクロの記録そのまま使わない理由のご提示ありがとうございます。 Range(c1, c2).Select Selection.ClearContents ↓ Range(c1,c2).ClearContents との事も大変ためになりました。 ちなみにセルの色を解除したかったので Range(c1,c2).ClearFormats で解除しました。 罫線も削除されてしまったので Selection.Borders(xlInsideHorizontal).LineStyle = xlDashDot Selection.Borders(xlInsideHorizontal).Weight = xlHairline Selection.Borders(xlEdgeRight).LineStyle = xlDashDot Selection.Borders(xlEdgeRight).Weight = xlHairline Selection.Borders(xlEdgeBottom).LineStyle = xlDashDot Selection.Borders(xlEdgeBottom).Weight = xlHairline とバリバリ書いているのが不格好ですがとりあえずコチラで対処しました。 ありがとうございました。
guest

0

VBA

1 Dim c1 As Range, c2 As Range 2 Set c1 = Range("F7").End(xlToRight).Offset(-2) 3 Set c2 = c1.Offset(24, -4) 4 5 Range(c1, c2).Copy 6 Range(c1, c2).Insert xlShiftToRight

投稿2021/11/19 01:30

編集2021/11/19 01:40
jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/11/19 01:37 編集

jinoji様 大変失礼いたしました。 仰る通りですね…… ``` そこから上に2つ移動後 Shiftを押下しながら左に4つ選択後 shiftを押下しながら下に24選択し それを「コピーした挿入貼り付け」(右方向にシフト) ``` 上記の動作はどのような語句でググれば良いのかも大変申し訳ないのですがご助力頂けますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問