プロが教える店舗&オフィスのセキュリティ対策術

Excelで、セルをクリックするたびに”○”を表示・非表示と切り替えたいのですが、できるのでしょうか?
チェックボックスでもよいのですが、”レ”か”・”しかでないのでそれを”○”で表示したいのです。
うまく説明できませんが、よろしくお願いします!!

gooドクター

A 回答 (6件)

>実行時エラー'13': 型が一致しません。



これはわたしのミスです。すいません。

じつは、前回紹介したコードは、
「選択(クリック)するセルは1つ」という前提で書いているために、上記のエラーが発生します。

たとえば、
ドラッグなどで、複数の範囲を選択しようとすると、実行時エラーがでてしまいます。
また、セル結合などで複数のセルが結合された場所がある時もエラーになります。

そこで、前回のコードの3行目あたりの、

   With Target

の部分を、

   With ActiveCell

に修正してみてください。
これで直ると思います。
    • good
    • 3
この回答へのお礼

で・できた~~~!!
初心者の私がhappypointさんのいうとおりにしたらバッチリできました(^o^)goo
○を置きたいセルが結合されていたのでエラーがでたのですね。
お忙しい中何度も何度も丁寧に教えていただき本当に本当にありがとうございました!
また機会がありましたらよろしくお願いしますm(__)m

お礼日時:2003/07/25 11:57

>補足したような事ができるのであれば使ってみたいのですが・・・


>初心者の私ではやはり難しいものなのでしょうか?

手順さえ覚えれば、今回紹介したVBAをブックに組み込んで使うことは、
別段難しいものではありません。

まずExcelを立ち上げて、○をつけたいブックを開いてください。

Alt + F11 キーを押してください。
VBAを記述・編集するための「Visual Basic Editor(VBE)」という画面が立ち上がります。

画面左半分に、「プロジェクト」というツリー状の項目が表示されていると思います。
そのなかに、
「Microdoft Excel Objects」という項目の下に、
開いたブックのシート名が一覧で表示されていると思います。

このなかから、クリック操作で○印をつけたいシートを選んで、ダブルクリックしてください。
そうすると、画面右半分に白紙の画面が現れると思います。

この白紙の部分に、下記コードを貼り付けてください。

'↓ここから
Dim myFlg As Boolean

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If myFlg = False Then Exit Sub
With Target
 If .Value = "○" Then
  .Value = ""
 Else
  .Value = "○"
 End If
End With
End Sub

Sub StartAndStop()
myFlg = Not (myFlg)
If myFlg Then
 MsgBox "「クリックで○」を開始します。", vbInformation
Else
 MsgBox "「クリックで○」を停止しました。", vbInformation
End If
End Sub
'↑ここまで


コードを貼り付けたら、右上の×(終了ボタン)を押して、VBEの画面を終了します。
すると最初のExcelの画面に戻ってきます。

エクセルの「ツール-マクロ-マクロ」をクリックします。
マクロの一覧ダイアログが表示されます。

「シート名.StartAndStop」という項目が反転していると思いますので、
これを確認して「実行」をクリックしてください。
メッセージが表示され、クリックで○をつけるモードになります。

マウスでクリックしたセルに、「○」がつくことを確認してください。
ちなみに、すでに○が入力されているセルを再度クリックすると、
こんどは○が消える仕組みになっています。


○をつけるモードを終了したいときは、再度
「ツール-マクロ-マクロ」をクリックし、
「シート名.StartAndStop」という項目が反転していることを確認して、
「実行」をクリックしてください。

すると、クリックしてもセルに○印がつかない通常の状態に戻ります。
    • good
    • 2
この回答へのお礼

すごい!すごいです!!
これこそ正に私がやりたかったものです(●^o^●)
happypointさんは本当にお詳しいのですね☆うらやましい限りです。
ですが、新しいブックでは動作したのですが作業したいブックでは「実行時エラー'13': 型が一致しません。」と表示され動作しません(ToT)
何がいけないのでしょうか?
お忙しい所度々すみません!

お礼日時:2003/07/25 10:45

こんにちは。



>1クリックで○を表示したいと単純に思ったのですが
「クリックでなにかする」というのはVBA(マクロ)の専門分野です。
しかしVBAを使わずに、
別の方法(つまり「クリックで表示」というのではないけれども)
でよければできないこともありません。

(1)
まず、「コピーして貼り付け」をキーボードでする方法。
どこか1カ所○を入力したら、そのセルを選択して「Ctrl+C」でコピー。
その後、○をつけたい箇所にカーソルを移動して「Ctrl+V」を押せば、何回でも連続して貼り付けることができます。

(2)
つぎに、文字の置換機能を使う方法。
○印をいれたいところに、
なにか代わりになる打ちやすい文字・記号をまとめて入力します。

たとえば、「Q」という文字を、○印をいれたいセルすべてに入力します。

そして、「編集-置換」を選択します。
「検索する文字列」を「Q」
「置換語の文字列」を「○」
と入力し、「すべて置換」をクリックします。

こうすることで、「Q」を入力したセルが、
すべて「○」に置き換わります。


「クリックしたら入力される」というのとは多少違いますが、
入力がだいぶ楽になると思いますよ。
    • good
    • 0
この回答へのお礼

丁寧に教えていただきありがとうございます。
「置換」というものがあるのを今始めて知ったのですが・・・(^_^;
そうですね!「置換」をすれば○を入力するよりだいぶ楽になりますね☆

>「クリックでなにかする」というのはVBA(マクロ)の専門分野です。

とありますが、補足したような事ができるのであれば使ってみたいのですが・・・初心者の私ではやはり難しいものなのでしょうか?
もしできるのなら詳しく教えていただけたら幸いです。
質問ばかりですみませんm(__)m

お礼日時:2003/07/24 13:41

こんばんわ。



言われるがまま、の仕様で作ってみました。
クリック(というかカーソルが動くたび)ごとに、○の表示がついたり消えたり。
(自分で言うのもなんですが、なんかえらく使いにくそうです。)

F11キーを押して、VBEを立ち上げ、
対象とするシートのシートモジュールにこのコードを貼り付けてください。
(よくわからないときは補足してください。)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

With Target
 If .Value = "○" Then
  .Value = ""
 Else
  .Value = "○"
 End If
End With

End Sub
    • good
    • 0
この回答へのお礼

早々にご回答いただきありがとうございます。
せっかくご回答いただいたのですが、初心者のためVBEというものが全くわかりません(ToT)
1クリックで○を表示したいと単純に思ったのですが、なかなか難しいようで・・・
補足いたしますので再度お願いいたします。

お礼日時:2003/07/24 10:07

VBEの画面で、VBAProjectのSheet1をクリックし、


GeneralはWorksheet、Declarations側はBeforeDoubleClickを選び下記を貼りつけて、ワークシートのC列でダブルクリックして見てください。
どこの列でもこれを働かせると、おかしくなるかもしれませんので、C列に限定しています。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then
If ActiveCell = "" Then
ActiveCell = "○"
Else
ActiveCell = ""
End If
End If
End Sub
こんなのでは多分ダメだと思いますが、どの点に不満ありか補足してください。質問内容が捉えられず、補足の呼び水の積もりです。
またコントロールツールボックスのチェックボックスはダメですか。

この回答への補足

詳しくいいますと・・・下記の例ような工事月報というものを1月を上半期・下半期と分けて作っているのですが、1日は準備、2日は○○工・・・というように日にち毎に○をつけなければいけないのです。
枚数が多くなると○をたくさん入れなくてはいけないので作業が面倒なため質問のようにセルをクリックする度○が表示・非表示できるといいな~☆と思ったのです。こんなこと初心者の私に可能でしょうか?
先生方どうかよろしくお願いいたしますm(__)m

(例)

       1 2 3 4 5 ・・・  ←日にち
準備工   ○
○○工    ○ ○         ←作業名
○○工        ○ ○

補足日時:2003/07/24 10:21
    • good
    • 0
この回答へのお礼

早々にご回答いただきありがとうございます。
せっかくご回答いただいたのですが、初心者のためVBEが全くわかりません(ToT)
1クリックで○を表示したいと単純に思ったのですが、なかなか難しいようで・・・
補足いたしますので再度お願いいたします。

お礼日時:2003/07/24 09:53

VBAで可能ですが


もっと簡単な方法で
データ - 入力規制 で
設定の項目で 入力値の種類を「リスト」にして
空白を無視するのチェックを外します
元の値のところに 「○, ,」と入れます
(カッコは入れませんよ)

ドロップダウンリスト・・・にチェックを入れます
この設定をしたセルをクリックすると○と空白が選べるようになります
    • good
    • 0
この回答へのお礼

早々にご回答いただきありがとうございます。
この方法もよいのですが、なんせ○の欄がたくさんある為手間がかかりそうなので・・・
1クリックで簡単に○が表示できるといいな~と単純に思ったのですが・・・(^_^;)
初心者のためVBAは使ったことがありませんが、VBAを使えば可能なのでしょうか?

お礼日時:2003/07/24 09:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング