ExcelVBAについてお伺いします。
成績表をつけているのですが、A列に「優・良・可・不可」の合否判定をしたいと思っています。
大体ずっと自分でその内容を見て判定ごとに入力してつけてきたのですが、人数があまりに多くて、それが面倒なのです。
クリックを1回したら「優」に、 もう一度したら「可」に、さらにすると「不可」なるようなマクロを組みたいと思ってい
ます。
A列にのみ限定してそのようなマクロを組むことは可能でしょうか?
ワークシートのイベントだと、他の列もそうなってしまったりするのです。
「A列限定の仕方」と「クリックするたびにセルが変わる」の具体的な方法をご存知の方、よろしければお知恵を貸してく
ださい。
コンボボックスにしようかとも思ったのですが、クリックイベントを他のことにも流用したいので、あえて今回「マクロで
組む」方法をとりたいと思っています。
わかりにくい説明ですが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
ExcelVBAのシートイベントにはクリックが無いので、ダブルクリックでの例です。
シート名のタブを右クリックし、コードの表示で出てきた画面にコピペします。
試すのはテストブックで。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s As String
If Target.Cells(1, 1).Column = 1 Then
Cancel = True
Select Case Target.Cells(1, 1).Value
Case "優": s = "良"
Case "良": s = "可"
Case "可": s = "不可"
Case Else
s = "優"
End Select
Target.Cells(1, 1).Value = s
End If
End Sub
回答頂きましてありがとうございます。2行目の「シート名のタブを右クリックし、コードの表示で出てきた画面にコピペ」のお言葉助かりました。実は最初エディタにコピペしても動かなくて困っていました(^^;)おわかりだと思いますが、実はVBAの超初心者なのです。すごく使いやすいシートになりました。ありがとうございました。また何かありましたらよろしくお願いします。
No.5
- 回答日時:
ご質問にピッタリの、簡単で、VBAコードも1行のものを紹介します。
(1)ワークシート上に(コントロールツールボックスから)リストボックスを貼りつけます。
(2)右クリックしてプロパテイのListFillRange
にF1:F4といれます。(どこでも邪魔にならないセル範囲のところで結構です。)
(3)F1:F4の各セルに、優、良、可、不可をいれる。
(4)デザインモード状態で、リストボックスをダブルクリックする。
Private Sub ListBox1_Click()
End Sub
が出ます。
(5)コードを1行下記のようにいれる。
Private Sub ListBox1_Click()
ActiveCell = ListBox1.List(ListBox1.ListIndex)
End Sub
(6)デザインモードを脱してワークシートへ戻る。
(7)優良可をいれたいセルをクリック。
次にリストボックスの中の優などをクリック。
それで前記のセルに優などクリックした評価文字がセルに入る。
連続して、A列クリック-リストクリックの連続繰り返しで
評価がセット出来る。
回答ありがとうございます。たったの3行ですませてしまうとは、すごいです。指示を見ながらやってみて驚きました。こういう方法もあるのですね。本当にありがとうございました。また何かありましたらよろしくお願いします。
No.4
- 回答日時:
余計なお節介ですが、、、
#1さんのコードを使用される場合は判定部分を
If Left(ad, 3) = "$A$" Then
にしないと、AA~AZ列でも反応しちゃうと思います。
再度の回答ありがとうございます。ただいまものすごくポイントことで悩んでおります。みなさまがこんなに早く素晴らしい回答をくださるとは思ってもみなかったもので・・・。本当にありがとうございます。
No.3
- 回答日時:
評価のために何百回クリックする事になるのでしょう?
簡単に、任意の数字入力で変更させる方法です。
(ご希望と違いますが・・・)
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 And IsNumeric(Target) Then
Select Case Target
Case 1
Target = "不可"
Case 2
Target = "可"
Case 3
Target = "良"
Case 4
Target = "優"
Case Else
Target = ""
End Select
End If
End Sub
右クリックメニューで選択する方法もありますが、厄介だったので・・・。
1~4の数字を入力すると記入されます。
文字の場合は何もしません。
回答ありがとうございます。そして良いアイディアをくださってすごく嬉しいです。そうですよね・・・確かに何回もクリックするのはものすごく疲れます。おっしゃるとおりです。数字入力の方が楽ですし。これはいけそうです!大感謝です。また何かありましたらよろしくお願いします。
No.1
- 回答日時:
「クリックするたびに」というイベントは無さそうなので、SelectionChangeイベントで作ってみました。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ad As String
ad = ActiveCell.Address
If Mid(ad, 2, 1) = "A" Then
If ActiveCell = "" Then
ActiveCell = "優"
ElseIf ActiveCell = "優" Then
ActiveCell = "良"
ElseIf ActiveCell = "良" Then
ActiveCell = "可"
ElseIf ActiveCell = "可" Then
ActiveCell = "不可"
ElseIf ActiveCell = "不可" Then
ActiveCell = ""
Else
End If
End If
End Sub
空欄→優→良→可→不可→空欄
となるようにしました。
ただし、selectionchangeですので、同じセルを二度クリックする場合は、一度カーソルを別のセルに移してから再度A列を選ばなければなりません。
お早い回答ありがとうございます。こういう方法でするのか・・・と感心しました。「クリックするたびに」ってないのですね。ちょっとショックが・・・。本当に助かりました。ありがとうございます。またお伺いすることもあると思いますが、その時はよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) 判定結果に応じて〇印(図形)をつけるマクロ 4 2022/10/30 11:22
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/04/21 13:46
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
Excelでセルをクリックするたびに表示を切り替えるには?
Excel(エクセル)
-
エクセルマクロ セルをクリックするたびに記号を入力
Excel(エクセル)
-
マクロボタンを押すたびに違う動作をしたい
Excel(エクセル)
-
-
4
VBA ダブルクリックするたびにセルの色が順番に変わる
Excel(エクセル)
-
5
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
6
【VBA】クリックする毎にセル色が変わる
Excel(エクセル)
-
7
Excelのマクロでボタンを押すと数が1足されるようにするには?
IT・エンジニアリング
-
8
エクセル ボタンを押すとセルの色が変わるようにしたい
Excel(エクセル)
-
9
シングルクリックとダブルクリックのイベントについて
Access(アクセス)
-
10
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
11
クリックすると文章が表示されるシステム
Excel(エクセル)
-
12
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
13
エクセルVBAで選択状態を解除のしかた
Excel(エクセル)
-
14
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
15
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
16
エクセルVBAのエディターが上書きモード?に・・・・。
Excel(エクセル)
-
17
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
18
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
19
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
20
条件に一致したときに画像を表示したいのですが・・。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
EXCELで変数をペーストしたい
-
i=cells(Rows.Count, 1)とi=cel...
-
【VBA】シート上の複数のチェッ...
-
DataGridViewで列、行、セルの選択
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
Excel vbaで特定の文字以外が入...
-
特定のセルが空白だったら、そ...
-
EXCELのVBA-フィルタ抽出後の...
-
”戻り値”が変化したときに、マ...
-
Excelのプルダウンで2列分の情...
-
セル色なしの行一括削除
-
【VBA】指定したセルと同じ値で...
-
任意フォルダから画像をすべて...
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA実行後に元のセルに戻りたい
-
DataGridViewの各セル幅を自由...
-
VBA初心者です。結合セルを保持...
-
Excel VBAで比較して数値があっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
Excelのプルダウンで2列分の情...
-
【Excel VBA】指定行以降をクリ...
-
特定の文字を条件に行挿入とそ...
-
EXCELで変数をペーストしたい
-
エクセルVBAでコピーして順...
-
TODAY()で設定したセルの日付...
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
VBA実行後に元のセルに戻りたい
-
【Excel】指定したセルの名前で...
-
”戻り値”が変化したときに、マ...
-
Excel vbaで特定の文字以外が入...
-
EXCELのVBA-フィルタ抽出後の...
-
指定した条件で行セルを非表示...
-
VBA初心者です。結合セルを保持...
-
ExcelのVBAで数字と文字列をマ...
おすすめ情報