新規無料会員登録で1000名様に電子コミック1000円分が当たる!!

昨日質問させて頂いたのですが、会社のパソコンではネットは使えない為、マクロ以外の方法でと質問させて頂きましたが、こちらのサイトにはアクセス制限がかかっておらずコピーペースト可能でしたので再度質問させて頂きます。

ちなみにマクロは今回初めて使う為、完全初心者です。
マクロ入門サイトをいくつか読んでみましたが、よくわかりませんでした…

本題ですが、例えばエクセルのシートに

1.いちご
2.りんご
3.みかん

という選択肢があり、2番のりんごを選択したいとします。

『2』という数字の書かれたセルをダブルクリックすると、『2』という数字が○で囲まれるようにする事は出来ないものでしょうか?

会社で使うファイルなのですが、そのファイルにはこういった選択肢がいくつもあるので、シート上のどのセルをクリックしても、クリックした箇所が○で囲まれるようになればと思います。

コピーする為の式が貼り付けられているのを見かけますが、ああいった式を貼り付けた場合、囲む○の大きさや形状はどの段階で指定するのでしょうか?
(ちなみに今回使用したい○のサイズや形状は、どこのセルをクリックしても同じもので構いませんが、行からはみ出ない大きさの○に設定したいです)

一応私が調べたサイトでは、Altキーを押しながら[F11]キーを押す⇒標準モジュールの右側に式を貼り付けると書いてありましたが、その後どのようにその画面を終了するのか、またその後どのように実行するのかが書かれてありませんでした

会社のパソコンはEXCEL2013です。

マクロのコードを貼り付けて、実際に使ってみるまでの流れも教えて頂けませんでしょうか?
素人でもわかりやすいサイトがあればそちらでも構いません。

どうかよろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

このような要求は昔からよくありました。

結構大変です。

それは、セルに入力された文字がどのようになっているか分からないからです。何もないシートに図形を挿入しようとすると、例えば、

  1.単一セルなのか結合セルなのか
  2.フォントの種類やフォントサイズは
  3.行高とセル内での上・中・下の位置は
  4.左・中・右揃えは
  5.どこに「○」を付ける
  6.セル内の文字は数値?文字列?
  7.表示した「○」を消したいことは?

くらいがはっきりすると制約付きでモジュールを作れます。



この質問の場合はほとんど未定の場合なわけで、次のようにします。

ア.実際に使用するシートに「○」を書いてください。

イ.解答したモジュールをそのシートのコードウィンドウに貼り付けて下さい。
(ALT-F11でVBE画面に移動し、メニューから、表示>プロジェクトエクスプローラーを選択し、Sheet1に「〇」があるならプロジェクトエクスプローラーのSheet1(Sheet1)をダブルクリックして表示された右の広い画面に貼り付けます。(Wordやメモ帳などと同じ感覚です))

これで終了です。当然ですが、ダブルクリックするたびに図形が現れたり消えたりします。「○」は図形のマルです。(別の形でも構いません)表示された図形を動かせないようにシートに保護をかけるべきかもしれません。このあたりは検討してください。

シートに帰ります。

この後、「〇」がうまく配置できたか検証します。「ア」で重要な点は、「○」の左上を該当セル内に納めることです。

うまく「○」が置けていれば、そのセルをダブルクリックすれば「○」は消えます。消えなければ位置を修正してください。必要な箇所に「○」を配置して、テストでダブルクリックして表示を全部消してしまいます。全部消えればテストと初期化が終了です。

最初に「○」を貼り付けてもらうことで、モジュール側で行うことが劇的に減少します。このようなシートを使うことの現実味も出てきます。

しかし、実務ではあまり使いません。この後、(アンケートのように)「○」を集計したいなどの追加要求が出てきたりします。「○」を付けて印刷したりしてその場限りで使うにはいいかもしれません。試してみてください。


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim shp As Shape 'オートシェイプ
  For Each shp In Shapes
    With shp
      If Not (Application.Intersect( _
        Range(.TopLeftCell.Address), Target) Is Nothing) Then
        .Line.Visible = Not (.Line.Visible)
      End If
    End With
  Next
  Cancel = True
End Sub
「セルをクリック⇒そのセルに入力された文字」の回答画像2
    • good
    • 11
この回答へのお礼

ご丁寧にありがとうございます。

挿入して下さっていた一番下の画像にあるような感じで○を付けるのが理想だったのですが、単一セルか結合セルかによっても変わってくるのですね。素人の私には難しすぎました…(笑)

まずは他の方法で代用し、自分なりにマクロについて勉強してみた上で、教えて頂いたものをやってみようと思います。

お礼日時:2014/06/25 04:45

こんばんは!


なかなか回答がつかないようなので・・・

>『2』という数字の書かれたセルをダブルクリックすると、
>『2』という数字が○で囲まれるようにする事は出来ないものでしょうか?

単純にセルを塗りつぶすだけの方が簡単なのですが、
ご要望が「丸囲い文字」というコトですね。

ExcelではWordのような囲い文字の設定はないようですし、
丸囲い数字は環境依存文字になってしまいますので、
オートシェイプの丸をセル上に表示させる方法はどうでしょうか?
尚、セル内の数字の位置がバラバラだとずれてしまいますので、数字そのものも中央揃えにしています。
セルをダブルクリックすると、数値が入っているセルに関してだけ「丸囲い文字」もどきにしています。
(文字列セルは何も反応しません)
そして、すでに丸のオートシェイプがあるセルをダブルクリックすると
その丸は消えるようにしてみました。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り、好みのセルをダブルクリックしてみてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'この行から
Dim c As Range, myShp As Shape, myFlg As Boolean
Set c = Target
If IsNumeric(c) And c <> "" Then
Cancel = True
c.HorizontalAlignment = xlCenter
For Each myShp In ActiveSheet.Shapes
If myShp.Top >= c.Top And myShp.Top + myShp.Height <= c.Top + c.Height And _
myShp.Left >= c.Left And myShp.Left + myShp.Width <= c.Left + c.Width Then
myFlg = True
Exit For
ElseIf myShp.Left > c.Left + c.Width And myShp.Top > c.Top + c.Height Then Exit For
End If
Next myShp
If myFlg = True Then
myShp.Delete
Else
With ActiveSheet.Shapes.AddShape(msoShapeOval, c.Left + (c.Width - c.Height) / 2, _
c.Top + c.Height / 40, c.Left + c.Height, c.Top + (c.Height / 20) * 19)
.Width = c.Height - c.Height / 20
.Height = c.Height - c.Height / 20
.Fill.Visible = msoFalse
With .Line
.ForeColor.RGB = vbBlack
.Weight = 0.7
End With
End With
End If
End If
End Sub 'この行まで

※ セル幅がセルの高さより広いという前提です。
※ すでにオートシェイプが表示されているセルでダブルクリックする際、
オートシェイプ上でダブルクリックしないようにしてください。

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 3
この回答へのお礼

クリックすると、そのセルにオートシェイプで作った○が乗るようになればなぁと思ったのですが、なかなか難しいのですね。
自宅のパソコンではエクセルが使えないので、会社に行ったら早速試してみたいと思います。

お忙しい中わざわざ考えて頂き本当にありがとうございました(^^)

お礼日時:2014/06/23 23:12

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelで丸をつけたい

企業から送られてきたエクセルのファイルに記入をしたいのですが、○をつけて選択する記入欄があります。「(男・女)の男に丸をつけて選択したい。」丸をつけると男が消えてしまうし。どうすれば消さずに丸をつけることが出来るでしょうか?暇な方、教えてください。

Aベストアンサー

 #2の補足質問の疑問がまだ解けていないとすると...。

 エクセルの画面を開いたとき、シートの上か下に「オートシェイプ」の文字がありませんか? その右のほうを見ていくと「○」があるはずです。この○をクリックしてからシートの上にカーソルを持っていくとカーソル(ポインタ)の形が十文字になります。このままクリック・ドラッグすると丸が描けます。この丸の上にカーソルを持っていくと今度はポインタの形が矢印の付いた十文字になります。この状態で右クリック、オートシェイプの書式設定を選択して、開いたウインドの塗りつぶしを「なし」にします。

 画面上に「オートシェイプ」の文字が見えなければ、メニューから表示を選択して「ツールバー」をポイント、開いたプルダウンメニューから「図形描画」をクリックしてチェックをいれて下さい。

Qエクセルで○をつけるマクロ設定

エクセルシートで、数箇所に選択欄があります。
例えば、男・女、初回・継続などです。
それぞれのいづれかに○をつけたいのですが、
オートシェイプで○をつけていくと何件もあるので
時間が掛かり面倒なんです。
マクロ設定はできませんか?
初心者なのでマクロがわかりません。
あるのなら解かりやすく教えてください。
お願いします。

Aベストアンサー

処理はマクロでも出来ないことは無いかもしれませんが、たぶんオートシェイプで○をつけていった方が早いですよ。
その時に、ひとつひとつ新しいオートシェイプを作ったりしていませんか?
ひとつ適当な大きさの○を作ったら、後はCtrlキーを押しながら移動させればコピーできますよ。(細かい位置調整はCtrl+方向キーでできます)

Qチェックボックスの箱のサイズとフォントサイズは変更できるの?

こんにちわ。

エクセル2000でチェックボックスを作成したのですが、
やや、小さいのでサイズを大きくしたいのです。
ボックスサイズ、ボックスの横に入れる文字の
フォントサイズは大きくできるのでしょうか?
もし、できるのなら方法を教えてください。

よろしくおねがいします。

Aベストアンサー

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセルにチェックボックスの説明のテキストを入れます。
 セルの書式設定でフォントが変更できます。
(2)チェックボックス(四角)をセルの境目などにセットする場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 図形描写からテキストボックスを選択し、チェックボックスの説明のテキストを入れます。
 テキストボックスは『線なし』にしておきます。2行で表示したりもできます。
 チェックボックスとテキストボックスを重ねて、見た目を調節します。
 テキストボックスを選択し、右クリック→順序→最背面へ移動 とします。

ご参考に。

コントロールツールボックスのチェックボックスならプロパティにFontがあるので変更できます。

フォームのチェックボックスやオプションボタンのフォントサイズは変更できなかったと思いますが、変更したように見せかけはできます。使用上、特に問題はないと思います。(だからダイアログにフォントがない?)

チェックボックスの位置によって、
(1)チェックボックス(四角)がセルの中央にある場合
 チェックボックスのテキストを必要な長さの空白にしてしまいます。
 チェックボックス(四角)の右横のセ...続きを読む

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

Qセルの内容の条件に応じて図形の表示をしたりしなかったりする

あるセルにオートシェイプ図(たとえば丸の図形)を挿入し、そのセルの値が一定数以上ならば表示され、一定数以下なら表示されないようにしたいのですが可能でしょうか?
可能であればその方法をご教示ください

Aベストアンサー

数値のあるセルに○をいれたいのですね?
そのセルを仮にSheet1のB3だとします。
一定の数を10だとします。
Sheet2のおすきなセルに
=IF(Sheet1!B3>10,"○","")といれて、コピーします。
Sheet1にもどり、Shiftキーを押しながらメニューの「編集」、「図のリンクはりつけ」し、図の書式設定で、「塗りつぶしなし」、「線なし」にします。
これでOKです。

Qエクセルマクロでの丸囲み文字

初めて質問します。

エクセルについてです。

あらかじめ一つのセル内には文字が入っていまして、
マクロのショーカット等でキーを押すとそのセル内の
文字にオートシェイプの丸が付くようにしたいのです。

例)
1.あらかじめ各セル内に1 2 3が入力されている。

1  2  3   (各セル内)
1  2  3   (各セル内)
1  2  3   (各セル内)
1  2  3   (各セル内)

2.マクロのショートカットキー等を押すと1 2 3を丸で囲める。

(1)  2 3   (各セル内)
1  (2) 3   (各セル内)
(1)  2 3   (各セル内)
1  2 (3)   (各セル内)


以上です。
ここで、例)では1,2,3としてますが、I,II,IIIを使用したく、
I,II,IIIの丸付文字はないので、オートシェイプの丸しかないの
かなと思います。
このようなマクロができるのなら教えていただきたいです。
ちなみに私はマクロは判りません。

以上です。
使用OSはWinXP、エクセルは2003です。

どなたか判る方いましたら、教えていただけないでしょうか?
よろしくお願いします。

初めて質問します。

エクセルについてです。

あらかじめ一つのセル内には文字が入っていまして、
マクロのショーカット等でキーを押すとそのセル内の
文字にオートシェイプの丸が付くようにしたいのです。

例)
1.あらかじめ各セル内に1 2 3が入力されている。

1  2  3   (各セル内)
1  2  3   (各セル内)
1  2  3   (各セル内)
1  2  3   (各セル内)

2.マクロのショートカットキー等を押すと1 2 3を丸で囲める。

(1)  2 3   (各セル内)
1 ...続きを読む

Aベストアンサー

< ちなみに私はマクロは判りません。 >
なら、まずは、下記のいずれから 選択し(他にも一杯あります。)
勉強してからにしましょう。
で、ないと説明しても時間が、掛かるばかりですので。


Excel VBA Parts Collection
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_menu.htm

Excel VBA 入門講座へようこそ!!
http://excelvba.pc-users.net/

Let's Excel VBA
http://www.sanynet.ne.jp/~awa/excelvba/kouza.html

これからVBAの世界に入ろうとしているあなたのために
http://www.tsucchy.com/Excel/index_e.html

Qエクセル2007で あるセルをクリックするとチェックマークが入るように

エクセル2007で あるセルをクリックするとチェックマークが入るように出来ますか?

探しては見ましたがわかりませんでした。

どなたか お分かりになる方いましたら 教えてください。

Aベストアンサー

VBAは大丈夫ですか?
シートラベルを右クリックし、メニューの「コードの表示」でVBEが表示されます。
コードウインドウに下記コードをコピペしてください。
A1:A10で空白セルをダブルクリックすればチェック記号が表示されます。
チェック記号が表示されたセルをダブルクリックすれば消去されます。
対象セル範囲は実際に合わせて書き換えてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A1:A10")) Is Nothing = False Then
Cancel = True
If Target.Value = ChrW(10003) Then
Target.ClearContents
Else
Target.Value = ChrW(10003)
End If
End If
End Sub

VBAは大丈夫ですか?
シートラベルを右クリックし、メニューの「コードの表示」でVBEが表示されます。
コードウインドウに下記コードをコピペしてください。
A1:A10で空白セルをダブルクリックすればチェック記号が表示されます。
チェック記号が表示されたセルをダブルクリックすれば消去されます。
対象セル範囲は実際に合わせて書き換えてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A1:A10")) Is Nothing = Fal...続きを読む


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

人気Q&Aランキング