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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel VBA 実行しても結果が反映されない
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBAの再計算が反映されない件につきまして
Visual Basic(VBA)
-
-
4
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
5
VBAで即反映させるには
その他(パソコン・スマホ・電化製品)
-
6
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
7
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
8
別シートのマクロを実行する方法
Excel(エクセル)
-
9
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
10
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
11
Excelで2つのデータの突合せをしたいです
Excel(エクセル)
-
12
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
13
エクセルのグラフで、値0のときのみ、ラベルを非表示にしたい
Excel(エクセル)
-
14
特定のセルが空白だったら、その行を非表示にしたい。。。
Visual Basic(VBA)
-
15
EXCELで上書き保存しないと反映されない
Excel(エクセル)
-
16
エクセルでエラーが出て困っています。
Excel(エクセル)
-
17
accessのレポートであとから他のテーブルのフィールドを追加する方法
Access(アクセス)
-
18
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
19
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
20
エクセルVBAのエディターが上書きモード?に・・・・。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
エクセルのシー名を二段表示に...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
エクセルで複数のシートに画像...
-
Accessのテーブルを既存のExcel...
-
(エクセル)Indirect関数で、ハ...
-
エクセルのシート連番の振り直し
-
EXCELの図形(テキストボックス)...
-
InputBoxに入力した言葉をシー...
-
ファイルを開くと必ず一番最初...
-
Excelでマクロ設定したが反映さ...
-
Excel、Aのシートにあって、Bの...
-
ワークシートそのものの色を変...
-
ActiveSheet.Protect UserInter...
-
特定の複数のシートに同じ処理...
-
【Excel VBA】コンボボックスで...
-
【エクセル】参照セルに何も入...
-
【Excel VBA】データ貼り付け先...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
ハイパーリンクでジャンプした...
-
エクセルでブック内の倍率がバ...
-
エクセルで複数のシートに画像...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
EXCELの図形(テキストボックス)...
-
エクセルのシート連番の振り直し
-
ワークシートそのものの色を変...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
Wordで差し込み印刷時に表示す...
-
EXCELで存在しないシート...
-
自分だけの辞書(データベース...
-
accessへエクセルの複数のシー...
-
Excelでマクロ設定したが反映さ...
-
エクセルの複数シートでのリン...
-
エクセル2003で、複数のシート...
おすすめ情報