![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Excel2007を使用しております。マクロ初心者です。
以下のようなことをExcelで実現したいと思っています。
ある列すべてに同じリストが登録されてあり、
その列のセルから"○"がリストから選択されましたら、自動的に同じ行の右の列のセルが自動的に"○"がつく
というようにExcelに登録したいのです。
いろいろと検索をしたのですが、検索の仕方が悪いのかこれといった答えの書いてあるサイトが見つかりません。
※リストの登録の仕方まではわかりますが、それ以降がわかりません。
この問題の解決策を、もしくはこの問題を解決できるサイトをご教授願います。
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
No.2
- 回答日時:
エクセルVBAの初心者との事だが、エクセルそのものの経験が少ないのか、文章が判りにくい。
>マクロの自動実行
マクロはある意味では、自動実行されるもので、質問の内容から書く必要なさそう。
「あるセルで○を選択すると、隣列に○を入れたい」とか
>ある列すべてに同じリストが登録されてあり
どういう意味。各行で同じ値がその列に入っているように取れるが、そんなデータはありえないでしょう。
リストの意味が多義的なのを知らないのだろうが、リストという言葉を使わなくてもよい場合か(下記の(1)など)。
(1)世間で言う、同じ性格のデータが連なって入力されている
(2)エクセル2003までのリスト(エクセルの術語)
http://www11.plala.or.jp/koma_Excel/contents3/ma …
2007では意味が変わっている。ーー>テーブル
http://excel2007.officetanaka.com/?day=20061020
(3)データー入力規則のデータの「入力値の種類」で選択した「リスト」
ドロップダウンリストからクリックして選択
この中の(3)か?
>リストの登録の仕方まではわかりますが
リストとは入力規則のリスト(上記(3))?
>その列のセルから"○"がリストから選択されましたら
選択された結果、そのセルの値!が○になるなら、こんなこと書く必要なし。
ーーー
A列で○の行がクリックされたらその隣のB列同行に○を入れる
とでも表現すべきか?
○が隣列とダブって意味無いように思うが。
ドロップダウンのクリックイベントを捕らえるのは初心者には難しい
。選択されてA列の値が変わったを捉えるしかない。
その変化を捉えるイベントはシートのChangeイベントで
コードは#1のご回答の通り。
イベントがVBA初心者の課題ではないと思う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
桁数が混在する並び替えの方法
-
EXCEL VBA 指定範囲内で特定の...
-
Excelで自動的に並べ替えなんて...
-
エクセルで2列を検索し2列とも...
-
エクセルの関数SUBSTITUTEを、...
-
オートフィルについて(急ぎ!)
-
マクロの自動実行
-
エクセルで一部除外した数字を...
-
エクセルVBA Unionはなぜ遅い?
-
エクセル【昇順・降順で並べ替...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
エクセルでグラフタイトルが折...
-
Excelの関数について、特定の文...
-
エクセルにおける、グラフの指...
-
塗りつぶしの色をコピーするには
-
C+vのvは英語で何の頭文字...
-
日付が1年以内になると他のセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルVBA Unionはなぜ遅い?
-
桁数が混在する並び替えの方法
-
エクセルで一部除外した数字を...
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで列内の同じIDの商品...
-
ExcelVBA:列方向の並び替え O...
-
オートフィルについて(急ぎ!)
-
エクセルで2列を検索し2列とも...
-
エクセル VLOOKUPが反映されない
-
エクセル マクロで列を連続し...
-
エクセルvba 一つ上の行を指定...
-
エクセルに詳しい人!!!至急...
-
エクセル 2010 マクロ 残セル表...
-
Excelで自動的に並べ替えなんて...
-
パソコンで簡易検索を作るには
-
EXCEL 指定した曜日に番号を振...
-
エクセル【昇順・降順で並べ替...
おすすめ情報