Excelマクロの設定が反映されない(初心者です)

このQ&Aのポイント
  • Excelでマクロを設定したが、反映されません。どうすればいいのでしょうか?
  • マクロ初心者の私がExcelでマクロを設定しましたが、正しく反映されません。教えてください。
  • Excelのマクロ設定で問題が発生しています。なぜ反映されないのか、わかる方がいれば教えてください。
回答を見る
  • ベストアンサー

Excelでマクロ設定したが反映されない(初心者です)

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のみにマクロで記録させたものが反映されている。 他のシートは部分的に反映されたりしている。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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

yukaaikawa
質問者

お礼

さっそくのコメントありがとうございます! 教えていただいたとおりにやってみたら(というかとりあえず、コードをコピペ)、完璧に出来ました!本当にありがとうございます! ただ、以下の要因で、今回は、シートごとにマクロの記録ボタンを押して行うことにいたしました。 ・部分的に省略したりだとか、なるべくシンプルにして質問させていただいたため、コードを読み取って、書き換えないとならない部分がある。それをするにはもう少し勉強してからでないと間違える恐れがある。 ・一連の作業は、ワークシート挿入後、別のところからデータを貼り付けて、再度処理を開始しなければならない。そのためのコードを書き換える能力がない。 今回、コードを編集したり、貼り付けたりする機能があることを初めて知りました。とても勉強になりました。それから、コメントくださった中の「'」がコメントアウトだということにも後から気付きました。そのほか、いろいろと勉強になりました。 少し勉強してから質問できるように、がんばっていきたいと思います。が、なかなかそれが長い道のりだったりするんですよね。。でもあきらめないようにします。ありがとうございました! 後で締め切ってポイント付与作業させていただきます!取り急ぎお礼まで。失礼します。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 手作業でされたことは、やはり手作業の中の約束事で出来上がっているのです。 特に作業グループは、あくまでも、マニュアル操作が主な使い方で、VBAでは、Selection というところで、シート全体を通した確保がされません。したがって、それらは個別にしなくてはなりません。 例: For Each nam In Array("a","b","c","d")  Worksheets(nam).Select  '-フォントの色  '-フォントサイズ  '-桁区切り書式  '-塗りつぶし Next nam としてみるとよいと思います。そして、個別のものは、個別に回すようにすればよいです。分からないようでしたら、また、書き添えます。

yukaaikawa
質問者

補足

ありがとうございます! そうなんですね。マクロという意味やできることなど、ぼんやりとしか分かってなく、お手数をおかけしてしまっています。 ところで、例、を挙げていただきましたが、これをどこにどのように設定したらよいのでしょうか。申し訳ありませんがご教示いただければ幸いです。

関連するQ&A

  • エクセルのマクロ

    以下の処理をするマクロを教えて頂きたいのですが。 ファイルab.xlsのSheet1のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列にコピーする。 ただし、Sheet3のC列には既にデータが入力されているので(空欄も有)、一番末端に付け足す形にする。 続けて、ファイルab.xlsのSheet2のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列に、前と同様のやり方でコピーする。 宜しくお願いいたします。

  • エクセルマクロ 次のようなプログラム教えてください

    エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。  a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、  各行ごとのファイルを作りたい。(行数は決まっていない)  なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、  a.xlsのB~D列のものを入力したものを作りたい。  (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する)   gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に  ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います  が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時  にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。  2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括  で作成する。  3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。

  • Excel 別ファイルに自動的に反映させたい

    Excelについて質問です。 A.xlsに入力したものをB.xlsに自動的に反映されるようにしたいです。  ABCDE 1 2 3 4 5 これのA列とD列のみを反映したいんです。 また行は毎日増えていくので、A.xlsで更新していく度に B.xlsも勝手にA列とD列だけ抜き出して自動的に更新されていくようにしたいです。

  • Excel 2007 マクロ 表の集計について

    Excel 2007 マクロ 表の集計について 2つのシート(Sheet1とSheet2)の情報を集計して Sheet3に反映するマクロを考えています。 (1)Sheet1のC列、D列、E列とSheet2のC列が空欄の場合は  Sheet3に反映しません。 (2)Sheet1のC列、D列、E列とSheet2のC列のいずれかに数値が  入っている場合にはSheet3に行を反映します。  ※Sheet3に反映する際に、Sheet1とSheet2のキー(A列)は  反映しません。  各Sheetの表は画像を添付します。  どのようなマクロを作成すればよろしいでしょうか。  マクロの超初心者です。  マクロのサンプルをご紹介頂けますでしょうか。

  • エクセルのマクロで」・・・

    マクロの超初心者です。 1度研修で習った程度です。 a.xlsというブックでマクロを動かし、 既にいくつかシートがあるb.xlsを開いて最後のシートの次に新しいシートを作り、 既にあるc.xlsの1つ目のシートにあるデータをb.xlsの新しく作ったシート に貼り付け、b.xlsとc.xlsのブックは閉じるようにすることはできますか?(b.xls,c.xlsは最初閉じている) どのような感じにa.xlsでマクロを組めばよいのでしょうか? 今起動しているブックではないブックを起動したりできるのかも不明です。

  • エクセル 同期の反映

    先程、QNo.4234533で エクセルファイル(sumple1.xls)のワークシート名○○のA1のセルに別のエクセルファイル(sumple2.xls)のワークシート名●●のB1の文字列を同期する方法を教えて頂いたのですが、エクセルファイル(sumple2.xls)のワークシート名●●のB1の文字列を変更・保存してエクセルファイル(sumple1.xls)を開いたのですが変更したはずの文字列が反映されませんでした。 どのようにすればきちんと反映するのでしょうか。

  • エクセルのマクロで、次の場合にどの様に組めばいいのか。

    あるブックに  検索用シート  シートA  シートB  シートC  シートD があり、検索用シートの中には  リスト1・・・A,B,C,D  リストA・・・・E,F,G,H,I  リストB・・・・J,K,L,M,N,O  リストC・・・・P,Q,R,S,T  リストD・・・・U,V,W,X,Y,Z がとなっている。 リスト1にあるA~Bは製造会社 リストA~DにあるE~Zは製品名 シートA~Dには、製品E~Zの性能一覧 検索用シートの  セルA1  セルA3  セルA5 がリストを選択するセルとして、 (1) セルA1で、リスト1からA~Dの何れかを選択する。 (2) セルA1の選択結果から、該当する製造会社のリストをセルA3に反映させる (3) セルA3で選択した製品一覧から、一つの製品を選択し、セルA5のリストに反映させる (4) A5で選択させた製品から、必要項目だけを抜き出しA7~A20に表示させる。 当然各アクションは、ボタンを押すことにより反映するものとして作っていますが、自動記録でマクロを組んでいるのですが、選択したモノを反映させる方法が分かりませんし、自動記録のマクロでは、リストからの選択が反映されないようなのでお願いします。 エクセルのバージョンは2002か2003です。

  • エクセルでSheet1の特定の列をSheet2に反映させたい

    エクセルの質問です。初心者です。 Sheet1ではA B C D E F列を使っています。 Sheet2にA B C列を反映させ、Sheet2の他の列にはSheet1とは別の情報を入れたいです。 変更するときはSheet1を変更するとして、Sheet1で行を増やしてもSheet2に勝手に反映する方法はありますか?

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • エクセルでデータを反映させたい。

    エクセルで下記のことをしたいのですが、どのような方法が ありますか?   A B C D E (列) 1 1  a b c d 2 2  e f g h 3 3  i j k l (行) ・他シートにA1の「1」を入れると、B~E列のデータが反映する。 (A列の数字が個人を指すもので、それを選択すると付随するデータ(B~E)も反映するということなんですが・・・。 説明が下手で申し訳ないのですが、どなたか教えて下さい。

専門家に質問してみよう