エクセル2003でセルをダブルクリックすると特定の文字が表示される方法

このQ&Aのポイント
  • エクセル2003において、セルをダブルクリックするだけで特定の文字「●」を表示する方法について教えてください。
  • 特定のセルは既に実装できているが、それをラジオボタンのように動作させたい。
  • A1A2、A3A4、A5A6などの結合されたセルの中から一つだけ「●」を表示させ、ダブルクリックのみで操作したい。
回答を見る
  • ベストアンサー

セルをダブルクリックするだけで●が表示されるように

エクセル2003にてセルをダブルクリックすると特定の文字「●」が入力されるようにしたいのです。 既出の質問 http://okwave.jp/qa/q915096.html を見て特定のセルは出来るようになったのですが、 それを更にラジオボタンのように動作させたいのです。 具体的には [A1 A2] [A3 A4] [A5 A6] [B1 B2] [B3 B4] [B5 B6] のようにA1A2の結合されているセル、A3A4の結合されているセル、A5A6の結合されているセルの中から一つだけしか●が表示されないようにしたいのです。 しかもそれをダブルクリックだけで… そういったグループがB列、C列とたくさんあるのです。 ラジオボタンで出来るのは知っているのですが、 出来ればラジオボタンを使わずに表示させたいのです よろしくご教授いただければと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.7

ANo4-5 merlionXXです。 おや、いつのまにか画像をUpされたのですね。 画像を見る限りでは、これまでのご説明とはことなり以下のように思えますが、それでよいでしょうか? 結合セル、B3:C3 D3:E3 F3:G3 これで1グループ 結合セル、B4:C4 D4:E4 F4:G4 これで1グループ 結合セル、B5:C5 D5:E5 F5:G5 これで1グループ 結合セル、B9:B10 これで1グループ 単独セル、B13 D13 F13  これで1グループ これらの各グループ内のみでオプションボタン(エクセルではラジオボタンとは言いません)のような●印をダブルクリックで設定する。 であれば、 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target     Select Case .Row       Case 3, 4, 5         If .Column < 2 Or .Column > 7 Then Exit Sub         Range("B" & .Row & ":G" & .Row).ClearContents       Case 9, 10         If .Column <> 2 Then Exit Sub         Range("B9:B10").ClearContents       Case 13         If .Column <> 2 And .Column <> 4 And .Column <> 6 Then Exit Sub         Range("B13,D13,F13").ClearContents       Case Else         Exit Sub     End Select     .Value = "●"     Cancel = True   End With End Sub ではいかがでしょう?

ezakokaze
質問者

お礼

ありがとうございます。 全く私のイメージにぴったりの物が出来ました。 あとは、私のほうで出来そうです。 このたびはまことにありがとうございました。

その他の回答 (7)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.8

添付図: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Dim GP(2) As Range  Dim dr(2) As String  Dim i As Long  Set GP(0) = Range("C3:H5") '塊ごとにグループ  Set GP(1) = Range("C8:C9")  Set GP(2) = Range("D11:D12,F11:F12,H11:H12")  dr(0) = "H"  '横グループ  dr(1) = "V"  '縦グループ  dr(2) = "H"  '横グループ  For i = 0 To 2   If Not Application.Intersect(Target, GP(i)) Is Nothing Then    Application.Intersect(GP(i), IIf(dr(i) = "H", Target.EntireRow, Target.EntireColumn)).ClearContents    Target.Value = "●"    Cancel = True   End If  Next i End Sub こう言ってはナンですが,規則性もへったくれも無しにとにかく何でも突っ込んじゃえってカンジですね。 やれば出来ますが,整理されていないと言うことは即それだけ遅く重く汎用性も乏しくなっていきます。

ezakokaze
質問者

お礼

ありがとうございます。 これも私のイメージどおりのものです。 どれか一つをベストアンサーにというと非常に難しいのですが、 先着順ということで今回は決定させていただきました。 今回は私の不十分な説明にもかかわらず 丁寧な対応をしていただき まことにありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.6

ウソ: >1~2行目はラジオボタンのように動作させたいセルがあるものの >3行目は普通の文字入力をさせたく、 >4行目からはまた1~2行目と同様の処理をさせたい 本当?: >AB列は,隣同士のセルで,ラジオボタンのように動作させたい >C列は普通の文字入力をさせたく、 >DE列はまたAB列と同様の処理をさせたい 先に回答したマクロから,ベタですが判りやすく書き直してみます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  dim c  if target.column mod 3 > 0 then    if target.column mod 3 = 2 then     c = target.column - 1    else     c = target.column    end if    cells(target.row, c).resize(1, 2).clearcontents    target.value = "●"    cancel = true  end if End Sub #困ったことに,教わったマクロをご自分で修正し応用して利用することもできない,のに思いつきでウソ説明を垂れ流しているので,あっちとこっちで質問内容がばらばらころころ違っています。何がホントなの?それぞれにマクロも違ってくるのに,でも自分じゃ出来ないのに,一体どうしたいの?というお話ですね。 最初にご自分で書かれていたように >具体的には >[A1 A2] [A3 A4] [A5 A6] >[B1 B2] [B3 B4] [B5 B6] >のようにA1A2の結合されているセル、A3A4の結合されているセル、A5A6の結合されているセルの中から一つだけしか●が表示されないようにしたい ホントの本当はいったい何がしたいのか,具体的にとはつまり「あなたのお手元の本当のエクセルの姿が正しく目に見えるように」事実を丁寧に書いてご相談を投稿してみてください。 ご自分の説明にウソや間違いが無いかちゃんと確かめながらご相談を投稿してみることで,ご自分の理解も進みますし半分以下の手間で問題も解決します。

ezakokaze
質問者

お礼

自分の質問の仕方が悪くて 大変ご迷惑をおかけしております。 直接、そのファイルをアップすることが 仕事の関係上出来ないので、イメージ画像となりますが 上記画像がイメージに近い形です。 実際には色は表示されていないのですが、 ラジオボタンにおけるグループを色付けしてみました。 赤・黄・緑などそれぞれの色で一つ●がつくようにしたいと思っています。 また、そういったグループがまとまっているわけではなく 黒や黄緑のようにとびとびになっている場所もあります。 よろしくご教授願えればと思います。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

ANo.4 merlionXXです。 質問をよく読みなおしたら、セルが上下に2つ結合しているのですね。 ならば、偶数行とか奇数行といった区分は出来ませんね。 たとえば、結合セルの上の部分(A1:A2ならA1)の行番号が1, 4, 7, 10, 13, 16の場合にのみ対象にするようにするなら Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target     Select Case .Row     Case 1, 4, 7, 10, 13, 16     .EntireRow.ClearContents     .Value = "●"     Cancel = True     End Select   End With End Sub でOKです。

ezakokaze
質問者

お礼

ありがとうございます。 また更にイメージに近い物ができました。 ですが、また私の質問が悪かったのだと思います。 行単位という書き方は 行の中で一つという意味ではなくて 例えば B4~F4までがグループとなっていて その中から一つ選ぶという意味で書いたつもりでした。 質問の仕方がまずくてすいません。 またよろしくご回答お願い致します。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

> 上記処理を行うグループが行でまとまった場合はどうなるでしょうか? 行でまとまった場合とはどういう意味ですか? 1行全体を、ひとつのグループにするという意味と解釈していいですね? > かつそういったグループがシート内で飛び飛びである場合はどうなるでしょうか? もうすこし具体的に書けませんか? とびとびとは偶数行とか奇数行という意味ですか? 仮に偶数行に限定という意味なら Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   With Target     If .Row Mod 2 <> 0 Then Exit Sub     .EntireRow.ClearContents     .Value = "●"   End With   Cancel = True End Sub 奇数行に限定なら     If .Row Mod 2 = 0 Then Exit Sub にかえてください。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

各列6行目までなら、以下のようなコードでOKだと思います。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target .Offset(1 - .Row).Resize(6, 1).ClearContents .Value = "●" End With End Sub

ezakokaze
質問者

お礼

ご回答ありがとうございます。 上記コードを入力してみました。 確かに6行目までは私のイメージしていたものに近い物ができたのですが、 上記処理を行いたい箇所、行いたくない箇所が とびとびになっているのです。 私の最初の質問の仕方が悪かったのだと思います。 すみません。 追加で質問させていただきたいと思います。 上記処理を行うグループが行でまとまった場合はどうなるでしょうか? かつそういったグループがシート内で飛び飛びである場合はどうなるでしょうか? 質問の内容が上手く伝わりましたでしょうか? 説明が下手ですいません。 よろしくご教授いただければと思います。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>そういったグループがB列、C列とたくさんあるのです。 適切に所定範囲を変更して使ってください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  if application.intersect(target, range("A1:C6")) is nothing then exit sub  cells(1, target.column).resize(6, 1).clearcontents  target.value = "●"  cancel = true End Sub

ezakokaze
質問者

お礼

ご回答ありがとうございます。 私がイメージしていたものに非常に近い物が出来ていました。 ありがとうございます。 私の最初の質問がまずかったのだとは思いますが、 もう少し追加質問させていただいてもよろしいですか? 上記を列ではなく、行単位で行いたい場合にはどこを書き換えれば良いのでしょうか? あと、●を表示させたい箇所がまとまっていない場合もどうしたら良いか一緒に教えていただけると助かります。 1~2行目はラジオボタンのように動作させたいセルがあるものの 3行目は普通の文字入力をさせたく、 4行目からはまた1~2行目と同様の処理をさせたい という場合です。 上手く伝わりましたでしょうか?

ezakokaze
質問者

補足

すみません、後で読み直してみて伝わらないと思ったので 再度投稿です。 行単位という意味は ラジオボタンのように動作させたい箇所が 行単位でグループになっているという意味です。 教えてくださったコードの行と列を丸々入れ替えたような形で動作させたいのです。 よろしくお願い致します。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

基本的には下記のようでいいのでは。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) r = Target.Row c = Target.Column If (r >= 1 And r <= 5) And (c >= 1 And c <= 2) Then Target.Value = "●" End If End Sub

ezakokaze
質問者

お礼

ご回答ありがとうございます。 上記コードを入力してみたのですが、 ダブルクリックだけで●は表示されるものの ラジオボタンのように動作できませんでした。 どうすればよいのか更にご教授いただけると助かります。

関連するQ&A

  • マクロ ダブルクリックによる設定

    特定セル(B2:B10)をダブルクリックすると特定の文字列付が記入される様になり、また別のセル(D2:D10)をダブルクリックするとB列と違う特定の文字列が記入される様なマクロを組みたいと考えております。 以前に若干似たような質問があっており恐縮ですが、詳しい方がおられましたら、ご教示お願いします。

  • ダブルクリックでセルを見つけたい(初心者です。)

    エクセル2000(Win)を使っています。簡単な数式の対象となっているセルを見つけたいのですが、 (例;A-B の数式なら、Aはどこにあるのか?Bはどこ?といった感じで。) 数式が入っているセルをダブルクリックしてみたところ、色の付いた枠で、例でいうところのA.Bが表示されました。 ところが、上手く表示できる時と表示できない場合があります。 なにか、ダブルクリックの場所にポイントがあるのでしょうか?それとも、他の原因でしょうか? 初心者ですので、上手く説明できたかどうかわかりませんが、なにとぞ宜しくお願いします。

  • エクセルのセル右下のダブルクリック

    sheet1のD1に、 「IF(ISERROR(VLOOKUP($B1,sheet2!$A:$F,6,FALSE)),"",VLOOKUP($B1,sheet2!$A:$F,6,FALSE))」 という式を入れています。 D列全てのセルにこの式を入れたかったので、D1のセル右下部分をドラッグしてペーストしましたが 行を挿入するとその行のD列には式が入っていませんよね。 これを解消する為にD1のセル右下をダブルクリックしてみるのですが、D2以降のセルにはペーストされません。 なぜですか? 行を挿入する個所が複数の為、いちいちその行のD列に式をペーストしなくても良い方法はありませんでしょうか。 この機能(セルの右下ダブルクリック)を使わないにしても、D列全てを範囲指定して式を入れるには、この式のどこを修正すればよろしいでしょうか? よろしくお願いします。

  • Excelのセルをダブルクリックした時のマクロ

    BeforeDoubleClickイベントで、特定のセルをクリックした場合にマクロを実行する方法についての質問です。 例えば セルC1をダブルクリックするとマクロAが実行 セルC2ををダブルクリックするとマクロBが実行 セルC3ををダブルクリックするとマクロCが実行 と、複数のイベントにそれぞれのマクロを実行させたい場合はどうすればよいのでしょうか。 詳しい方がいましたらアドバイス頂けないでしょうかm(_ _ )m

  • VBA ダブルクリックで行に色をつける方法

    VBAで特定のセルをダブルクリックして、セルを塗りつぶす方法について教えてください。 例えば ----------- 1. B1をダブルクリックすると、B1:K1が赤になる、 B2をダブルクリックすると、B2:K2が赤になる、 … B10をダブルクリックすると、B10:K10が赤になる、 ----------- 2. B11をダブルくりっくすると、B11:K11が青になる B12をダブルクリックすると、B12:K12が青になる、 … B20をダブルクリックすると、B20:K20が青になる、 ----------- 3. B21をダブルクリックすると、B21:K21が黄になる、 B22をダブルクリックすると、B22:K22が黄になる、 … B30をダブルクリックすると、B30:K30が黄になる、 ----------- のように10行ごとに塗りつぶす色を変えることはできるでしょうか? 下記質問 https://okwave.jp/qa/q7374899.html のベストアンサーになっている、keithinさんの回答を参考にさせてもらい、 1.の部分を赤にすることはできるようになりましたが、 2.以降がどうしてもできません。どうぞ、よろしくお願いします。

  • セルが左ダブルクリックされると、そのセルが色づけされるプログラムがあり

    セルが左ダブルクリックされると、そのセルが色づけされるプログラムがあります。 しかし、そのセル内に複数行の文字列が入力されている場合、そのセルを選択時、 そのセル内の文字列が数式バーにも複数行表示されますが、数式バーとセルが重 なってしまう時、左クリックが優先されてしまうため、左ダブルクリックが認識 できません。どうすれば、この問題を解決できるのでしょうか。 教えて下さい。

  • フォームボタンクリックでセル色表示

    作業中中断により日付を変更したのかどのボタンまでクリックしたのかがわからなくなります。 A2セルの日付を変更したらB5セルが赤表示、ボタン1をクリックしたらC5セルが青表示、ボタン2をクリックしたらD5セルが緑表示、ボタン3をクリックしたらE5セルが黄表示等どこの作業まで実施したのかわかるようにしたいのですがVBAのコードがお解りになる方よろしくお願いします。

  • ダブルクリックしたセルを別のセルに反映させたい

    会社でえくせる2003を使っています。 データリストがあり、1列(A列)リスト番号があります。 たとえば、リスト番号をダブルクリックしたら、リストの外のセルにリスト番号を反映させたいのです。 つたない説明ですが、よろしくお願いします。

  • ダブルクリックで画像挿入

    結合されたセル(例:A3、M3、Y3、A34、M34、Y34、A65、M65、Y65←これは固定)をダブルクリックすると (または、ただ単にセルをダブルクリックすると) 画像を任意のフォルダから読み込み、挿入するというものを作りたいのですが、どのようにすればよいでしょうか? ご教授お願いします。

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

専門家に質問してみよう