• 締切済み

【Excel2003】セルの値をクリックで変えたい

標記の通りExcel2003を使用しています。 セルに「□」の文字が入っていて、これをシングルクリックで 「■」の表示に変えるようにしたいのですが、 エクセルの既存の機能でこうしたことは可能でしょうか? それともVBAの機能を使わないとできませんか? よろしくお願いします。

みんなの回答

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.4

チェックボックスとセル値変更との複合です。 指定列を選択したら選択されたセルにチェックボックスを表示 チェックボックスのOn/Offでセルの値を変更 これで擬似的にシングルクリックによる値変更が実現します。 1、Sheet1にチェックボックスを作成し、Visibleの初期値をFalseに設定 2、Worksheetモジュールに以下のマクロを貼り付けます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '#セル選択を変更すると以下のマクロが実行されます Me.CheckBox1.Caption = "" If Target.Column = 1 And Target.Cells.Count = 1 Then '#選択されたセルがA列で、複数セルを選択していない場合は以下を実行 Me.CheckBox1.Left = Target.Left + 10 'CheckBox1の位置を選択セルの左に合わせる(数字は位置調整用、適当に) Me.CheckBox1.Top = Target.Top + 2 'CheckBox1の位置を選択セルの上に合わせる '#選択セルの値をCheckBox1に反映 If Target.Value = "■" Then Me.CheckBox1.Value = True Else Me.CheckBox1.Value = False End If Me.CheckBox1.Visible = True 'CheckBox1を表示する Me.CheckBox1.Caption = Target.Address  'カレントセルのアドレスをCheckBox1の見出しに格納 Else '#選択セルがA列以外または複数セルを選択した場合はCheckBox1を非表示に Me.CheckBox1.Visible = False End If End Sub Private Sub CheckBox1_Click() '#CheckBox1がクリックされたら以下のマクロを実行 '#CheckBox1の見出しに保存されたアドレスのセル(つまりは選択セル) の値を、チェックボックスの値によって変更する If CheckBox1.Value Then Me.Range(CheckBox1.Caption).Value = "■" Else Me.Range(CheckBox1.Caption).Value = "□" End If End Sub

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

チェックボックスなら□をレ点付きの□に変えることが出来ます。 もう一度シングルクリックで元に戻りますけどね。 「表示」「ツールバー」から「フォーム」を選んで レ点付きの□のボタンをクリックしてシート状に配置してください。 □チェック#(#は数値)が貼りつきます。 チェック#の部分をテキスト編集してください。 これ以外だとVBAになりますが、アクションのタイミングは ダブルクリックかボタンのクリックでしか出来ません。 入力値での切り替えで良いなら、表示形式をユーザー定義で "■";"■";"■";"□" だと数値なら■、文字なら□、未入力はブランクになります。 [=1][青]"■";[=2][赤]"■";[黄]"■";"□" だと1なら青い■、2なら赤い■、1,2以外の数値は黄色い■、文字は□、未入力はブランクになります。

pochi202
質問者

お礼

ご回答有り難うございます。 自分もチェックボックスで対応できれば…と思っていたのですが、 作業の依頼主から黒い塗り潰しの箱にできないかという注文でしたので VBAは素人ですし頭を悩ませておりました。 今回はアドバイス頂いた内容を活かせませんでしたが、 入力値での切り替えの方法は大変勉強になりました。 今後の機会がありましたら使わせて頂きたいと思います。 お世話になりました!

  • izmlz
  • ベストアンサー率55% (67/120)
回答No.2

・キーボード操作でセルを移動してもイベントが発生する ・現在選択しているセルをクリックしてもイベントが発生しない という条件でもよければ↓のマクロになります。なお、クリックするたびに■と□の表示を切り替えるようにしています。シートモジュール(シートタブを右クリック-[コードの表示])にコピペしてみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  Dim c As Range  For Each c In Target   If c.Value = "□" Then    c.Value = "■"   ElseIf c.Value = "■" Then    c.Value = "□"   End If  Next End Sub  ダブルクリックで表示を変えるようにする、ということでしたら、↓になります。同じくシートモジュールにコピペです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  If Target.Value = "□" Then   Target.Value = "■"  ElseIf Target.Value = "■" Then   Target.Value = "□"  End If  Cancel = True End Sub

参考URL:
http://www2.odn.ne.jp/excel/waza/macro.html
pochi202
質問者

補足

ご回答有り難うございます。 考えていたものにかなり近い形で感激しています! 一つ参考に伺いたいのですが、 『・現在選択しているセルをクリックしてもイベントが発生しない』 この条件について、現在選択しているセルをクリックして イベントを発生させるという方法は難しいのでしょうか? 初歩的な質問で申し訳ありません…。 よろしくお願い致します。

  • mcsp
  • ベストアンサー率46% (6/13)
回答No.1

 おはようございます。 個人的にも非常に興味のある内容ではありますが、左クリックのみでの イベント発生となると、思い浮かぶのは  1.ワークシート関数やVBAには実装されていない  2.Windows API のマウスイベントを利用してみる  3.もし質問者様の問題が解決したとして、セルの値「□」を修正    しようとした時にマウスの左クリックでそのセルを選択した時    に毎回「■」に変わってしまう(その後に変更は出来るでしょう    けど…)。マウスイベントのON/OFF切替をうまく作らないと    難しそう という感じがします。  同様な質問内容が無いかいろいろ検索してみましたが、これといった ものは見つかりませんでした。答えにはなっていませんが参考URLを 載せておきます(この問題の解決はしていません)。

参考URL:
http://questionbox.jp.msn.com/qa2878695.html?StatusCheck=ON
pochi202
質問者

お礼

早速のご回答有り難うございます。 今回はアドバイスして頂いた内容を活かせませんでしたが、 ご紹介頂きました先も大変勉強になりました。 今後の参考にさせて頂きますね。 お世話になりました!

関連するQ&A

  • Excel2007でのセルのダブルクリック

    Excelでアクティブセルの枠をダブルクリックすると、 一定の条件に合致するセルまでアクティブセルがジャンプする機能がありますが、 セルが小さい時には誤って枠をダブルクリックしてしまうことが多く、非常に不便です。 下記サイトでは、Excel2003での解決方法が掲載されていますが、 根本的な解決策ではないため、採用できません。 http://www.relief.jp/itnote/archives/000181.php #オートフィルが使えなくなるという代償はとても許容できません・・・ 同じ情報を掲載している他サイトもありましたが、いずれもExcel2003までの古い情報です。 私はExcel2007を使用しているのですが、2007ではこの機能をうまく無効化できないのでしょうか。

  • セルをクリックするだけでネット検索できませんか?

    エクセルのセルの中に入力されている文字を、セルをクリックするだけでブラウザが開いて セルの文字を検索窓に自動で入力して検索してくれる機能はないでしょうか? VBAも多少使ったことがあります。 VBAのプログラムでもいいので上記のような事は出来ないでしょうか? よろしくお願いいたします。

  • セルの値をファイル名として習得したい

    Excel2000でセルの値をファイル名として習得したい Excel2000でVBA SaveAsメッソドを使用しファイルを保存しようと考えております。 この際ファイル名をセルの値より取りたいと考えております。 どのようにすればよいかお教えください。 セルの値は関数CONCATENATEを使用しいくつかの文字を結合したものです。

  • Excel2000 複数セルに共通のコメントを

    お世話になります。 既存のEXCELブックにVBで言うTOOLTIPテキスト(ポップアップヒントっていうのかな?)のようなものがあり、どのように出しているかわからず困っています。基本的にEXCELにそのような機能はないと思っているのですが・・・。 【状況】 1.ある範囲(3列10行)のセルをクリックすると(フォーカスを当てると)右下に3行のクリーム色のテキストが表示される。基本的には右下だが、3列のうち一番右のセルが半分隠れていたりする場合は左下の場合もある。 2.マクロがついているブックだが、マクロ無効で開くを選択してもTOOLTIPテキストは出てくる。 3.コメントではない。(根拠:その範囲のセルで右クリックした場合、コメントの削除が出てこない) 4.コメントの場合マウスをセルの上にもってきた場合表示されるが、クリックして、フォーカスを移すことで出てくる。また、複数セルを選んだ場合でも出てくる。 このような状態です。EXCELに私が知らないだけで、このような機能があるのでしょうか?またあるならどのように設定するのか教えてください。

  • Excel2010 多くの文字が入力されたセルをクリックした際の挙動に

    Excel2010 多くの文字が入力されたセルをクリックした際の挙動について。 いつもお世話様です。 例えばExcel2003の場合、 Alt+Enterでの改行を含んだ多くの文字が記載された1つのセルをクリックした場合、 「式」の部分には その全文が表示されます。 ↑画面イメージを添付しましたのでご覧ください。 しかしながら、同ファイルをExcel2010で開くと、 式の部分にはセル内容の2~3行しか表示されない事が分かりました。 これを何らかの設定で、従来と同様に式部分に全文を表示させる事は出来ますか? 宜しくお願い申し上げます。

  • EXCEL2010でセルが編集中かを判定する方法

    EXCEL2010でセルが編集中(ダブルクリックやF2が押下された状態)が わかる方法ってあるのでしょうか? VBAでマクロを作成しているのですが、 セルが編集中の場合はボタンを押下できないようにしたいのです。 EXCEL2000だと勝手にボタンが押下できない状態になっていますが、 EXCEL2010だとボタンが押せてしまい困っております。 ちなみにいろいろ調べたのですが、EXCEL2000ではセルが編集中かは わからないみたいです(私の調べ方が悪いかも知れませんが、、、) どなたがご教授願います。 よろしくお願いします。

  • VBA(Excel)でセルの値をbasファイルに読み込む方法

    現在Excelでツールを作っておりまして VBA(Excel)でセルの値をbasファイルに読み込みたいんですが そのような事は出来るのでしょうか? どなたか分かる方がいましたら教えてください。 よろしくお願いいたします。

  • Excel:なぜかセルを突き抜ける値がある

    ネットからExcelにコピペしたときに良くあるんですが、 なぜかセルを突き抜けたり、セルの大きさにまったく干渉 を受けない文字列があります。 これをちゃんとセルの幅で折り返したりする、値にするには どうしたらいいんでしょうか?

  • 【Excel】セルをクリックすると、リストボックスが出てくる

    【Excel】セルをクリックすると、リストボックスが出てくる エクセルで、あるセルをクリックすると リストから選択肢が出てくる(リストボックス?)ように設定したいのですが、 どのように設定するのでしょうか? (添付画像の○の部分のイメージです。) 試しに、コントロールツールボックスでやってみようとしましたが、 何だか思うように出来ませんでした。 エクセルをあまりよく知らないで恐縮ですが、 ご教示頂けますと幸いです。

  • EXCEL→ACCESSインポートでセル内改行が機能しません・・。

    EXCELデータをACCESSにインポートする局面で、 ・EXCELデータのセルは、CHAR(10)によって、セル内で改行されています。 ・これをACCESSへインポートすると、改行が機能せず連続した文字列となってしまいます。 ・ACCESSの該当項目は、メモ型(文字数が多いので)です。 EXCELでの表示と同一の表示がACCESSで得たいのです。 よろしくご指導下さい。

専門家に質問してみよう