Excelでマクロを設定したのですが、なぜかきちんと反映されません。
以下、主な作業(実際の作業とは少し違いますがだいたい主な作業)を記載してみました。なぜ反映されないのか分からないので、もしお分かりになる方がいらしたら教えてください。必要な情報が足りない場合は、付け足します!マクロ初心者、というか、Excelも関数をたまに使う程度なので、基本から間違えてたりするかもしれませんがお願いいたします。
※一連の作業がまずワークシートを1枚増やして、その後、必要なデータを貼り付け、さらに作業にうつります。ということで、キリのいいところで作業を2つに分けています。
【STEP1】
新しいマクロの記録
ok
挿入 ワークシート
Sheet4タブを a と変更
Sheet1タブを b と変更
Sheet2タブを c と変更
Sheet3タブを d と変更
記録終了
【STEP2】
新しいマクロの記録
ok
タブabcdを選択 作業グループの状態で、
全体の文字サイズを10に変更
行を3行挿入
A1セルの文字サイズを16に変更
4行目を選択し、文字位置を中央揃え
A4・B4・C4・D4・E4・F4のセル色を青に変更
シートaのA1にaと入力
シートbのA1にbと入力
シートcのA1にcと入力
シートdのA1にdと入力
シートaとシートcとシートdを選択 作業グループの状態で、
B列・C列を選択 桁区切りスタイルに変更
シートcを選択
C列・D列を選択 桁区切りスタイルに変更
G4セルを青に塗りつぶし
記録終了
保存
(Book1.xls)
新規作成
マクロ
Book1.xls!Macro1 実行
★シートabcdにそれぞれ必要なデータを貼り付ける。
マクロ
Book1.xls!Macro2 実行
⇒シートdのみにマクロで記録させたものが反映されている。
他のシートは部分的に反映されたりしている。
No.2ベストアンサー
- 回答日時:
こんにちは。
最初に、別なコメントですが、ご質問文のように、自分のすることを論理的に、そしてきれいに並べられる人は、意外に早くマクロは上達します。もう、それで半分以上は出来たに等しいです。
マクロのほとんどは、一行のマクロの積み重ねです。後は、それぞれをどういう表現をするかだけです。その表現の仕方を知らないから出来ないだけです。それさえ分かれば、たぶん、私が書かなくても、yukaaikawaさんは、出来るはずだと思います。
掲示板では、いろんなノウハウが紹介されたりしますが、目的を達成できさえすれば、それで良いと思います。分からないことは、後は、VBAの逆引き辞典やインターネットで細かいことを調べればよいのです。
今回は、入門レベルに合わせて書くことにし、#1で書いた話とは少し違いますが、元の文章をそのままマクロに書き換えてみました。あまり、私が初歩的な書き方をすると、他の回答者の方から、思わぬ突っ込みを受けかねませんもので、少しアレンジはしています。
なお、塗りつぶしの青色は、私などは、パステルカラーを使うことにしています。文字の色の場合は、濃い青を使うようにしています。
色番号は、ヘルプで調べると出てきます。
「GridlineColorIndex」 プロパティをみてください。 (グリッドライン)
'行を3行挿入
'?.Rows("1:3").Insert shift:=xlShiftDown
の始点となる部分が、1行目ということなら、こうなります。
'--------------------------------------------
'標準モジュール
Sub TestMacro1()
Dim i As Integer
If Worksheets.Count < 4 Then
'挿入 ワークシート
Worksheets.Add
End If
For i = 1 To 4
With Worksheets(i)
.Name = Mid("abcd", i, 1)
'全体の文字サイズを10に変更
.Cells.Font.Size = 10
'行を3行挿入
'*ここが良く分かりません。1行目からという条件です
.Rows("1:3").Insert shift:=xlShiftDown
'A1セルの文字サイズを16に変更
.Range("A1").Font.Size = 16
'4行目を選択し、文字位置を中央揃え
.Rows(4).HorizontalAlignment = xlCenter
'A4・B4・C4・D4・E4・F4のセル色を青に変更
.Range("A4:F4").Interior.ColorIndex = 34 'パステルの水色
'.Range("A4:F4").Interior.Pattern = xlSolid 'たぶん要らないはず
'シートa~dのA1にa ~d と入力
.Range("A1").Value = Mid("abcd", i, 1)
'aとシートcとシートdをB列・C列を選択 桁区切りスタイルに変更
'分岐
If .Name <> "b" Then
.Columns("B:C").NumberFormatLocal = "#,##0"
Else
'シートcをC列・D列を選択 桁区切りスタイルに変更
.Columns("C:D").NumberFormatLocal = "#,##0"
' G4セルを青に塗りつぶし
.Range("G4").Interior.ColorIndex = 34
End If
End With
Next i
'最初のシートに戻る
Worksheets(1).Select
End Sub
さっそくのコメントありがとうございます!
教えていただいたとおりにやってみたら(というかとりあえず、コードをコピペ)、完璧に出来ました!本当にありがとうございます!
ただ、以下の要因で、今回は、シートごとにマクロの記録ボタンを押して行うことにいたしました。
・部分的に省略したりだとか、なるべくシンプルにして質問させていただいたため、コードを読み取って、書き換えないとならない部分がある。それをするにはもう少し勉強してからでないと間違える恐れがある。
・一連の作業は、ワークシート挿入後、別のところからデータを貼り付けて、再度処理を開始しなければならない。そのためのコードを書き換える能力がない。
今回、コードを編集したり、貼り付けたりする機能があることを初めて知りました。とても勉強になりました。それから、コメントくださった中の「'」がコメントアウトだということにも後から気付きました。そのほか、いろいろと勉強になりました。
少し勉強してから質問できるように、がんばっていきたいと思います。が、なかなかそれが長い道のりだったりするんですよね。。でもあきらめないようにします。ありがとうございました!
後で締め切ってポイント付与作業させていただきます!取り急ぎお礼まで。失礼します。
No.1
- 回答日時:
こんにちは。
手作業でされたことは、やはり手作業の中の約束事で出来上がっているのです。
特に作業グループは、あくまでも、マニュアル操作が主な使い方で、VBAでは、Selection というところで、シート全体を通した確保がされません。したがって、それらは個別にしなくてはなりません。
例:
For Each nam In Array("a","b","c","d")
Worksheets(nam).Select
'-フォントの色
'-フォントサイズ
'-桁区切り書式
'-塗りつぶし
Next nam
としてみるとよいと思います。そして、個別のものは、個別に回すようにすればよいです。分からないようでしたら、また、書き添えます。
この回答への補足
ありがとうございます!
そうなんですね。マクロという意味やできることなど、ぼんやりとしか分かってなく、お手数をおかけしてしまっています。
ところで、例、を挙げていただきましたが、これをどこにどのように設定したらよいのでしょうか。申し訳ありませんがご教示いただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Excel VBA 実行しても結果が反映されない
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAの再計算が反映されない件につきまして
Visual Basic(VBA)
-
-
4
VBAで即反映させるには
その他(パソコン・スマホ・電化製品)
-
5
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
6
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
7
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
8
VBA 表示設定 texttocolumns
Excel(エクセル)
-
9
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
10
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
11
エクセルでエラーが出て困っています。
Excel(エクセル)
-
12
表のセル内の右側に余白?
Windows Vista・XP
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
Excel VBA IF文がうまく動作しないわけがわかりません…
Visual Basic(VBA)
-
15
別シートのマクロを実行する方法
Excel(エクセル)
-
16
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
17
エクセルの関数 ENTERを押さないと反映されない。
Excel(エクセル)
-
18
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
19
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
20
EXCELで上書き保存しないと反映されない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
Wordで差し込み印刷時に表示す...
-
【ExcelVBA】マクロの入ったシ...
-
【Excel VBA】データ貼り付け先...
-
Accessのテーブルを既存のExcel...
-
accessへエクセルの複数のシー...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
特定のシートのみ再計算させな...
-
InputBoxに入力した言葉をシー...
-
エクセルで開くページを指定したい
-
EXCELで存在しないシート...
-
エクセルマクロでシート名を条...
-
ワークシートそのものの色を変...
-
EXCELの図形(テキストボックス)...
-
[エクセル]行の挿入、シート間...
-
エクセル、特定のシートにパス...
-
指定したシート名以外を非表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
エクセルで複数のシートに画像...
-
ハイパーリンクでジャンプした...
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
【ExcelVBA】マクロの入ったシ...
-
エクセル、特定のシートにパス...
-
エクセルのシート連番の振り直し
-
EXCELの図形(テキストボックス)...
-
特定の複数のシートに同じ処理...
-
【Excel VBA】データ貼り付け先...
-
エクセルのシー名を二段表示に...
-
EXCELの「シートの見出し」のフ...
-
Accessのテーブルを既存のExcel...
-
Wordで差し込み印刷時に表示す...
-
accessへエクセルの複数のシー...
-
エクセル、別のシートの表をポ...
-
指定したシート名以外を非表示...
おすすめ情報