• 締切済み

エクセルのマクロ

エクセル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

  • Excelのマクロについて

    分かる人がいれば、教えてください!! Excel上のセル(A1~A10)をクリックしたら"○"をB1~B10のセルをクリックしたら"×"になるようなマクロを作りたいんですけど、どうすれば良いのでしょうか? ちなみに例えばA1~A10に○がついていて、そのA列のどれかをクリックしたら空白になるようなマクロもお願いします。 大変困っているのでよろしくお願いします。

  • エクセルにマクロが!

    エクセル(Excel2000)で、マクロを使っていないのにマクロが使われてしまいます。 例えば、 まず普通にスタート→プログラムと表示していき、エクセルを立ち上げる。 次にどこのセルでもいいから適当に文字を入力する。(例えば、A1にaと入力する) そして、ファイル→名前を付けて保存で保存する。 こうしてできたエクセルのファイルを普通に立ち上げると、「このファイルはマクロが使われています」と、マクロを有効にするか、無効にするかを確認する画面が出てきてしまいます。 どうしてでしょうか。直す方法はあるのですか。よろしくお願いします。

  • Excel(セルの結合マクロ)

    いつもお世話になっております。 Excelのマクロで、選択範囲の中で、下のセルが空白のものは、上のセルと結合されるマクロを作りたいと考えています。 (例1:A1セルに”TEST”が入力されており、A2,A3セルが空白として、A1:A3を選択し、マクロを実行するとA1からA3がセル結合される  例2:A1に”TEST2”B2に"TEST3"が入力されており、A1:B3を選択すると、A1からA3が結合され、B2とB3も結合される) 説明が下手で申し訳ないのですが、お力を貸していただけませんでしょうか? よろしくお願いいたします。

  • エクセル マクロ 入力制限について

    検索で探したのですが、うまくヒットしないため、質問させていただきます。 エクセルのセル入力制限についての質問です。 D1セルが空白でなかったら、A1・B1・C1に入力できないようにする と言う条件です。 それを、D1セルだけでなく、行すべてに適用したいのですが、 (D2 に入力されていたら、A2・B2・C2を入力できなくする) マクロで処理できるでしょうか? マクロ実行は、オープンしたときに実行するようにしたいと考えております。 ご教授お願いします。

  • エクセルのマクロ

    セルA1に、a2からa90までの任意の文字を入力した後にマクロを実行します。 セルA1にa7と入力されている時はセルB1にa6と表示され、セルA1にa86と入力されている時はセルB1にa85と表示されるようなマクロを教えてもらいたいのですが。 B1は必ずA1の数字の部分が1つ少なくなるということです。      

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • Excelマクロ 入力の有無を判定するマクロを組みたい

    はじめまして。 マクロの初心者です。 エクセルマクロを利用して、セルに何か入力(文字でも数値でも)がある場合の判定をしたいのですが、うまくいきません。 具体的には、 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何か入力された場合 → D1セルに"○"を出力。 ・(A1セルが空白で)B1からC10セル(10個のセル)のいずれかのセルに何も入力がない場合 → D1セルは"(空白)"。 ・但し、大前提として、A1セルに"×"が入力されている場合 → D1セルに"×"を出力。 (B1からC10セル(10個のセル)のいずれかのセルに何か入力されている場合でも、A1セルが"×"ならばD1セルは"×"とする) としたうえで、同様の判定を ・A11セルおよびB11からC20を判定しD11セルに結果を出力、 ・A21セルおよびB21からC30を判定しD21セルに結果を出力、 … と繰り返して、A100セルまで実行させたいと考えています。 (D1、D11、D21、D31、D41、D51、D61、D71、D81、D91の10個のセルに"○"、"×"、"(空白)"の結果を出力したいです) 過去の投稿や解説書などを参照にしているのですが、なにぶん本当に初心者のためうまくいきません、、、 どなたかお力添えをお願いします。

  • エクセルのマクロで、できると思うのですが・・・。

    例えば、A1から下にリストを入力していき、A100まで入力したとします。 他のシートなどで作業後、シートを戻し、再度リストを入力しようとした時、すぐにA101のセルに入力したいのです。 つまり、A列のなかで、【現在一番上に位置している空白セル】をアクティブにするマクロが知りたいのです。 ただ、アクティブになるだけでは無く、それが画面上に現れて、すぐに入力できるようになっていないと困るのです。 どうでしょうか。

  • エクセルexcelの関数やマクロ教えて下さい!

    エクセルexcelについて教えて下さい。 数字が入力されたセルに数を加えていきたいのですが、 "1"が入力されたセルに"3"と入力すると"4"と表示されるようにする方法を教えて下さい。関数やマクロなど勉強中ですが、難しくて出来ません。お願いします。

  • エクセルマクロ、ご教示ください。

    このようなことを考えています。   セルA5からA20までに、1から16の番号を入力しています。 このセルA5からA20の範囲の中で、セルをダブルクリックすると、ダブルクリックしたセルの番号を常にセルC5に表示させたいのです。 例えば、セルA6をダブルクリックすると、入力されている番号2を、セルC5に表示、      セルA8をダブルクリックすると、番号4をセルC5に表示 このような、マクロは可能でしょうか。 どなたか、よろしくお願いします。 エクセルは2003を使用しています。

専門家に質問してみよう