• 締切済み

エクセルのマクロ

エクセル2013です。セルA1に 1を入力すると○ 2を入力すると△ 3を入力すると□ 4を入力すると× 空白のときは◎ を表示するようにするマクロはどうすればいいでしょうか?  

みんなの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

#3、cjです。#3補足欄拝見しました。 1-4以外の値の入力をキャンセルする「データの入力規則」の設定方法、 ということでよろしいでしょうか。 以下、手順。 [データの入力規則]を設定したいセル範囲を選択する。 メニューリボンの[データ]タブ → [データの入力規則] → [データの入力規則]  → [設定]タブ / [条件の設定]   / [入力値の種類(_A)]のドロップダウン → [リスト]を選択   / [元の値(_S)]の入力フィールドに、     1,2,3,4     と入力   [OK]ボタン 手順、以上。 これで、ドロップダウンリストに選択可能な1-4の入力候補が表示され、 1-4以外の値をキーボード入力して確定しようとすると警告メッセージの表示と共に、 不正値の入力をキャンセルします。 DEL/DELETE ボタンで値を消去することは可能です。 イレギュラーとして、 不正値を何処かのセルからコピーして[データの入力規則]を設定したセルに貼り付けた場合は、 不正値の入力をキャンセルすることは出来ません。 しかし一般的には、[データの入力規則]のリストが設定されているセルに対しては、 ドロップダウンリストから選択するのが暗黙のルールですから、行儀よい人が使う分には、 [データの入力規則]さえ設定しておけば、イレギュラーは考えなくてもいいでしょう。 もしも、それでも必要と思うなら、 VBA側でも不正値が入力された場合の処理を書き加えることは可能です。 この場合は、例えば「1-4以外のすべて」とか「5以上の数値の場合」or「文字列の場合」とか、 条件を決めて、対応する確定値をどうするか、等、 まず要求を決めることが先になります。 この件が解決してから、でいいのですが、 一般機能の基本的な使い方については、質問するより調べる方がより確実ですし身に付きます。 【 excel2013 データの入力規則 】のようなキーワードで検索してみて、 ご自分でも色々確かめるようにしてくださいね。 参考URLは先程Google検索のトップにあったページで、 「Excel 2013で入力するデータをドロップダウンリストから選択する方法」 です。 以上です。

参考URL:
http://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=015903
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

こんにちは。 > セルA1に 1を入力すると○ 2を入力すると△ 3を入力すると□ 4を入力すると× 空白のときは◎ を表示するようにするマクロはどうすればいいでしょうか? "...を表示するようにする"機能はExcelに用意されていませんので、 A1の値が変更されたタイミングで、値を書き換えてあげるような VBAを設定しておく必要があります。 こういう場合に注意しておきたいのは、 「値が変更されたタイミングで値を書き換える」と、 再帰的に「値が変更されたタイミング」のイベントが呼び出されてしまうので、 構造的に無限ループになり得る書き方はせず、 明示的にイベントをキャンセルするように書くことです。 また、1 - 4 以外の値が設定された場合の処理についても考えておく方がいいのですが、 もしも、それ以外の値を入力出来ないようにしたいのであれば、 それは、Excelの一般機能の方で[データ][データの入力規則]を設定しておいた方が、 扱い易く解り易いですから、その部分は今回、VBA側では手当てしません。 以下は、ご質問に書かれていることだけを元に、標準的な記述例のひとつです。 説明し切れていないことがあったりすると、そのままでの応用が難しい場合もあるでしょうから、 その場合は補足欄にでも、書いて貰えれば再度対応します。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address <> "$A$1" Then Exit Sub   Select Case Target   Case Empty, 0 To 4     Application.EnableEvents = False     Target.Value = Mid$("◎○△□×", Target.Value + 1, 1)     Application.EnableEvents = True   End Select End Sub

y-momiji
質問者

補足

回答ありがとうございました。大変助かりました。私は、エクセル等パソコンにあまり詳しくないので、申し訳ありませんが1-4以外の値が設定された場合の「データの入力規則」の設定方法はどのようにすればいいでしょうか?(記述方法等) よろしくお願いします。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 横からお邪魔します。 >セルA1に入力した文字・数字等を他のセルではなく同じセル(A1)に表示させたいのですが というコトですので・・・ 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り、A1セルにデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Address = "$A$1" Then Select Case .Value Case 1 .Value = "○" Case 2 .Value = "△" Case 3 .Value = "□" Case 4 .Value = "×" Case "" .Value = "◎" End Select End If End With End Sub ※ 1~4・もしくは何も入力されていない場合のみ反応します。 (5 などの場合はそのまま変化しません)m(_ _)m

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

とくにでやる必要はないと思うのですが。 結果をB1に表示するとして =IF(A1="","◎",IF(A1=1,"○",IF(A1=2,"△",IF(A1=3,"□",IF(A1=4,"×",""))))) で十分だと思います。 マクロにこだわるなら Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address() <> "$A$1" Then Exit Sub Select Case Range("A1") Case 1 Range("B1") = "○" Case 2 Range("B1") = "△" Case 3 Range("B1") = "□" Case 4 Range("B1") = "×" Case "" Range("B1") = "◎" Case Else Range("B1") = "" End Select End Sub とか。 空白と1から4以外は空白が返ります。

y-momiji
質問者

補足

回答ありがとうございました。セルA1に入力した文字・数字等を他のセルではなく同じセル(A1)に表示させたいのですが、何か方法はありますか?

関連するQ&A