• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルをダブルクリックするだけで●が表示されるように)

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

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

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

  • ベストアンサー
  • 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/7941)
回答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/7941)
回答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/7941)
回答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

専門家に質問してみよう