• ベストアンサー

マクロの自動実行

Excel2007を使用しております。マクロ初心者です。 以下のようなことをExcelで実現したいと思っています。 ある列すべてに同じリストが登録されてあり、 その列のセルから"○"がリストから選択されましたら、自動的に同じ行の右の列のセルが自動的に"○"がつく というようにExcelに登録したいのです。 いろいろと検索をしたのですが、検索の仕方が悪いのかこれといった答えの書いてあるサイトが見つかりません。 ※リストの登録の仕方まではわかりますが、それ以降がわかりません。 この問題の解決策を、もしくはこの問題を解決できるサイトをご教授願います。

  • daiii
  • お礼率24% (6/25)

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばA列にリストが設定されているのでしたら次のようなマクロになりますね。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Value = "○" Then Target.Offset(0, 1).Value = "○" Exit Sub End If End Sub

daiii
質問者

お礼

手早い回答ありがとうございました! おかげ様で解決できました!

その他の回答 (2)

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

こんにちは。 >※リストの登録の仕方まではわかりますが、それ以降がわかりません。 リストというのは、Excelの用語の中のリストですか?本来は、リストのオブジェクトは、範囲が限定されますが、マクロやオブジェクトについては分かるということですね。 (書いている最中に、imogasiさんが、書いていただきました。) 「選択されましたら」という言葉の意味が、マウスでクリックすると解釈しました。 そうすると、以下のようなコードにしたらよいと思います。 >この問題の解決策を、もしくはこの問題を解決できるサイトをご教授願います。 ワークシート上のイベント・ドリブン型マクロというのは、特殊ですから難しいです。以下は、私個人の書き方ですが、やはり先人のものを真似たり、他人から指摘されたりして切磋琢磨して覚えてきました。ここのサイトでは、基本的には、回答者同士のやりとりが禁じられているのと、初心者の方にとっては、玉石混交ですので覚えにくいです。 イベント・ドリブン型は、中級で出てくるものですが、最初に、UserForm のコントロール・ツールから覚えるのが普通ですので、ワークシートなどのイベント・ドリブン型は、あまりガッチリしたものを覚える機会がないと思います。旧バージョンのマクロでは、このようなスタイルではありませんでした。 Excel 2007 になってすから、内部的に変わったようです。イベント・ドリブン型は、間違えると、無限ループになります。 作業コードの前にごちゃごちゃ書くのはエラーを出さないためです。 '------------------------------------------- 'シートモジュール '------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub 'A列 If Target.Count > 1 Then Exit Sub If Target.Value = "" Then Exit Sub   If Trim(Target.Value) Like "○" Then     Target.Offset(, 1).Value = "○" 'ひとつ右隣   End If End Sub '------------------------------------------- なお、これには、以下の構文は必要ありません。 Application.EnableEvents = False  '作業コード Application.EnableEvents = True

daiii
質問者

お礼

丁寧な回答をありがとうございます。 解決できました!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

エクセルVBAの初心者との事だが、エクセルそのものの経験が少ないのか、文章が判りにくい。 >マクロの自動実行 マクロはある意味では、自動実行されるもので、質問の内容から書く必要なさそう。 「あるセルで○を選択すると、隣列に○を入れたい」とか >ある列すべてに同じリストが登録されてあり どういう意味。各行で同じ値がその列に入っているように取れるが、そんなデータはありえないでしょう。 リストの意味が多義的なのを知らないのだろうが、リストという言葉を使わなくてもよい場合か(下記の(1)など)。 (1)世間で言う、同じ性格のデータが連なって入力されている (2)エクセル2003までのリスト(エクセルの術語) http://www11.plala.or.jp/koma_Excel/contents3/mame3020/mame302004.html 2007では意味が変わっている。ーー>テーブル http://excel2007.officetanaka.com/?day=20061020 (3)データー入力規則のデータの「入力値の種類」で選択した「リスト」    ドロップダウンリストからクリックして選択 この中の(3)か? >リストの登録の仕方まではわかりますが リストとは入力規則のリスト(上記(3))? >その列のセルから"○"がリストから選択されましたら 選択された結果、そのセルの値!が○になるなら、こんなこと書く必要なし。 ーーー A列で○の行がクリックされたらその隣のB列同行に○を入れる とでも表現すべきか? ○が隣列とダブって意味無いように思うが。 ドロップダウンのクリックイベントを捕らえるのは初心者には難しい 。選択されてA列の値が変わったを捉えるしかない。 その変化を捉えるイベントはシートのChangeイベントで コードは#1のご回答の通り。 イベントがVBA初心者の課題ではないと思う。

関連するQ&A

  • マクロの自動実行などについて

    エクセル2003のVBAマクロについて質問です あるワークシートに値が入力されたら、マクロを自動実行するように出来ないでしょうか? 又、そのセルの値を別のセルにコピーしたいのですが、データを入力する度にセルの場所が ひとつ下へずれます。この最終列のセルの値を必ず拾うようにするにはどうすればよいでしょうか? ややこしくてすいません

  • 検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロ

    検索の実行で、ヒットした行のA列の番号を、セルB3に自動入力するマクロを教えてください。 エクセルの6行目から約19000行目まで、A列には1からの番号、B列に薬名、C列に剤形、D列にコードが入力されている薬台帳があるのですが、この台帳から薬名を検索して、最初にヒットしたA列の番号をセルB3に表示したいのです。 どなたかよろしくお願いします。

  • マクロで検索するには

    エクセルで、何行もデータが入ったリストを作成しています。 あるセルに入れた文字を含む行だけを表示するようなマクロを設定したいです。ちょうど検索窓をつくるようなイメージです。 表示の仕方は、フィルタで「~を含む」をしたような感じにしたいです。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

  • EXCL のマクロ自動実行(イベントによる)についてお教えください。

    EXCL のマクロ自動実行(イベントによる)についてお教えください。 エクセルのあるセル(たとえばA1セル)に入力するとマクロが自動実行する方法をお教えください。 よろしくお願いいたします。

  • ある操作後に自動的にセルに斜線を入れるには?

    Excelで、管理表、対応表という2つのシートを作成していますが、T列に処理という欄を設けて、ここに入力規制のリストで○か×かを選択するようにしているのですが、ここの処理のある行のセルに○が入ると、その行にあるM列からU列までのセルに斜線もしくは-が、自動的に入るようにしたいのですが、マクロ処理でできますでしょうか?できるのであれば、教えて下さい。

  • マクロで可能でしょうか??

    初めまして ken2308といいます。 Excelは有る程度、使えるのですが 業務上マクロを覚えることになりました。 マクロに関しては全くのシロウトです。 Excelのマクロで以下のような事をやろうと思っておりますが Excelのマクロでは対応は可能でしょうか?? 【例】 Excelファイルが2つあります。 このファイルの大きさが【50列】×【50行】あり 【列】は飛び飛びで20列ほど非表示にており 【行】は複数のセルを結合して有ります。 このファイルを1つのファイルにしたいのですが Excelのマクロでは対応は可能でしょうか?? 自分としては以下のマクロを作成すればよいと 思っているのですが・・・ (1)列・行ともに非表示⇒表示にする。 (2)結合しているセルを解除戻す。 (3)2つのファイルをコピペする。 (4)貼り付け後、不要な列を削除する。 ※このマクロがうまく行ったら、上記で出来たファイルから  ピボットテーブルを作成するつもりです。

  • 日付自動実行マクロについて質問です。

    エクセル2000で日計表を作成しています。 A列には日付のシリアル値が、B列には日付、C列には曜日が入っています。 毎日データを挿入するのはD列からとなります。 そのファイルを開いた時に自動実行マクロでその日のD列にセルを飛ばすのにはどうしたらいいでしょうか? 苦労しています、どなたか詳しい方教えていただけると助かります。

  • Excelでマクロを組んで、データを繰り返し抜き出したいのですが

    Excelでマクロを組んで「データ取得→データ並び替え→データ取得・・」と繰り返す作業を自動的に行いたいと思っています。 元データ       一回目     二回目    │A│        │A│      │A│    │列│       │列│     │列│   ─┼─┼─  ──┼─┼  ──┼─┼ 1行 │k │    3行│m│   2行│d │ ──┼─┼─  ──┼─┼  ──┼─┼ 2行 │d │    5行│z │   4行│r │ ──┼─┼─  ──┼─┼  ──┼─┼ 3行 │m │    8行│e │   6行│p │ ──┼─┼─  ──┼─┼  ──┼─┼ 4行 │r │    9行│f │   7行│s │ 例えば、上記の元データのようにデータ(小文字アルファベット)を入力し、その後一回目、二回目・・・とデータの並べ替えを繰り返し、その都度上から二段目のデータのセルのデータ(この場合それぞれz、r)を取得して変数xに収めるという作業を繰り返し自動的に行うようにしたいのですが、「x=Cells(2,1)」とマクロを書くと非表示になっているセルA2のデータ(この場合d)を常に取得してしまいうまくいきません。 これはどのような方法で解決できるのでしょうか。 OSはWindows2000、ExcelはExcel2000を使っています。 よろしくお願いします。

  • 保護されているシートでマクロ実行するとエラー

    Excel2010で勤務表を作っています。 A列にとある文字列(承認)と入力すると、その行が保護されるマクロを、下記URLからコピペして使わせて頂いてます。 http://questionbox.jp.msn.com/qa3277541.html 勤務表なので、土日祝日は網掛けになるよう条件付き書式を使っています。 休暇取得した場合は網掛けを付けて、休日出勤した場合には網掛けなしにしたり出来るようマクロをマクロの自動記録で作りました。 ところが、どこかの行が保護されている状態で、セルの網掛けを変更するマクロを実行すると 「実行時エラー'1004'アプリケーション定義またはオブジェクトの定義エラーです」と出てしまいます。 保護されている行ではなく、まだ保護はされていない行に実行しています。 そこで一旦保護の解除をしてから、セルの網掛けを変更するマクロを実行してみるとちゃんと動きます。 保護をかける時に、網掛け(セルの書式設定)を許可すれば動くのかな?とか思ったのですが、どこにどういう構文を入れたらいいのか、はたまたその認識すら間違っているのかも分かりません。 マクロに関してはド素人で、自動記録かWebで調べて見つけたマクロをちょっと加工して使う程度です。 どうか知恵をお貸しください。よろしくお願いします。

専門家に質問してみよう