いつも皆様には大変お世話になっております。

早速ですが、VBAでセルをクリック(もしくはダブルクリック)するとそのセルの色が変わるといったようなマクロが組めるでしょうか。
色を変えたいのは、A1~A4までの4個のうち1個だけなのでA1がクリックされればA2~A4までは『色なし』にしたいのです。
そんなことは出来るでしょうか?
よろしくお願いいたします。

A 回答 (2件)

こんにちは。



1. シート選択タブ上で右クリック[コードの表示]
2. 下記のコードをコピー&ペースト

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  ' 動作させるセルのアドレス
  Const ADDR As String = "A1:A4"
  ' 着色するセル背景色のカラーインデックス
  Const CIDX As Long = 36
  
  If Union(Target, Range(ADDR)).Address(0, 0) = ADDR Then
    If Target.Count = 1 Then
     Range(ADDR).Interior.ColorIndex = xlColorIndexNone
     Target.Interior.ColorIndex = CIDX
    End If
  End If

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

早速の返事ありがとうございます
お~!! すごいです!!
ばっちり望んでいたものです!!
またこれを参考に色々と作ってみます!
本当にありがとうございました

お礼日時:2007/03/30 09:55

「クリックすると」というイベントを拾う方法がわからないので、ダブルクリックすると、にしてみました。



シートタブを右クリックして「コードの表示」を選択するとVBAの画面が出るので、右の白いところに以下のマクロをコピーして貼り付けてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim Rng As Range, myRng As Range
 Set Rng = Range("A1:A4")
 Set myRng = Intersect(Target, Rng)
 If myRng Is Nothing Then Exit Sub
 Rng.Interior.ColorIndex = xlColorIndexNone
 myRng.Interior.ColorIndex = 5
 Cancel = True
End Sub

これで、A1からA4までのどれかをダブルクリックすると、そのセルが青くなります。色を変えたいときは、上の「5」という数字を適当に変えてください。(VBAのヘルプで「ColorIndex」で検索すると、数値と色の対応表が出てきます)

なお、普通はダブルクリックするとそのセルは入力状態になりますが、上のマクロではならないようにしています。ダブルクリックして色を変えた後、そのセルを入力状態にするのであれば、最後の
 Cancel = True
を削除してください。
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。
皆様すごいですね 『普通はダブルクリックするとそのセルは入力状態になりますが』
これを止めることが出来るとは思っていませんでした
またこれを参考にがんばってみます
ありがとうございました。

お礼日時:2007/03/30 09:59

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

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

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

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

Q車の色の名前の一覧を探してます!

自動車の色の名前は、ウイニングブルーメタリック、カナリーイエローマイカなど独特なカタカナ名が多いですが、このような名前が一覧になっているようなHPを探しています。ありましたらどなたか教えてください。

Aベストアンサー

ここで探して下さい。

参考URL:http://www.soft99.co.jp/

QA1セルにAと入力すると、A2セルに3000A3セルに2000A4セルに1000と表示させたい。

A1セルに「A」と入力する1回だけで、
A2セルに「3000」
A3セルに「2000」
A4セルに「1000」
A5セルに「合計数字」を表示させたいのですが、
式をご教授願いたいです。

よろしくお願いします。

Aベストアンサー

D1:G3
A500030001000
B500300130
C1200800300
A1にA,B,Cのどれかを入れる。
A2に =VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE)と入れて、
A4まで(G-D-1列数だけの行数)式を複写する。
結果
A1がBの場合A1:A4は
B
500
300
130

A1の空白の場合に対処して
=IF(A1="","",VLOOKUP($A$1,$D$1:$G$2,ROW(),FALSE))
が良いでしょう。
(既回答とほぼ同じ式ですが、1箇所違うところがあります。)

Qファイル一覧の項目の色について

ディスクを開くとフォルダゃファイルの一覧が表示されますが、この一覧の各項目名というか表題というか、この表示される名前に色はつけられないものなのでしょうか、色分けできればわかりやすいので、教えていただきたいのですが。

Aベストアンサー

explorerだけではできそうにない。
いろいろなツールがフリーソフトである。


たとえば、
http://homepage3.nifty.com/pyxis/

Qexcel、A1セルとB1セルの差でセルに色を付けるには・・・・。

皆さん始めまして、いつも大変お世話になっております。
excelでの質問です。

まずA1セルとB1セルに小数点2桁の数値を入力します。
A1セルからB1セルの数値を引き、その差が0.16以上の場合に条件付書式を使いA1セルとB1セルに色を付けたいのです。

当方条件付書式に
「数式が」=(A1-B1)>=0.16
上記の条件を入れてみたのですが、A1セルとB1セルに入れる数値によっては上手く色が付けられないで困っています。

参考値
 A1「54.19」 B1「54.03」
上の数値だと色が付かなかったりします
他に良い方法ありましたら教えて頂けると幸いです、よろしくお願いいたします。

Aベストアンサー

確かにならないようですね。
こういった不具合は昔からあったようです。たとえば、
1.6-0.1**100
としてみるとよいかも知れません。ただし演算負荷は増すように感じられるので、もし数値の分解能がわかれば、それより少し小さい数を用いた方がよいでしょう。

Q「名前をつけて保存」のデフォルト表示形式を「一覧」以外に変えられますか?

MS-Office以外のアプリケーションで「名前をつけて保存」を選択した際の、
ダイアログウィンドウ内の表示形式を変えられますか?

「詳細」「一覧」「アイコン表示」「並べて表示」「縮小版」
などの選択肢を一定のものに変えたいのです。
(現状では、毎回「名前をつけて保存」を開くたびに「一覧」表示に戻ってしまうようです)

OSはWindows-XPです。

Aベストアンサー

Windows標準の機能(フォルダオプションなど)では出来ませんが
http://okazaki.incoming.jp/matatabi/
のFasieと言うフリーSOFTを使えば出来ます。

http://okazaki.incoming.jp/danpei2/software/fasie.htm
http://pasokoma.jp/39/lg390467#390654

QセルA1 と セル A4 の数値を直線にするには?

カテゴリーを間違えてしまいました。こちらで再質問させて下さい。

セルA1=10
セルA4=40
という数値が入力されている場合、
セルA2とセルA3それぞれにEXCELの関数を入力し、
A1~A4の区間を直線にするには
どのような関数があるのでしょうか?

今回の様な数値の場合、
A1=10
A2=20
A3=30
A4=40
と成りますがEXCEL関数を使用する場合、
A2とA3にはどの様な数式が入るのでしょうか?

Aベストアンサー

#2です。なるほどね。確かに私でも#9さんのようにVBAでやります。

任意のセルに「最初の値」があり、そのセルと同じ列で、かつ最初の値
より下に任意の数だけ空欄をあけて、最初の値より大きい「最後の値」
があることを前提にしたVBAマクロを簡単に作ってみました。

Sub FNC_DEF()
STA_ROW = Selection.Row
STA_DAT = Selection.Value
I = 0
Do
I = I + 1
Loop While Selection.Offset(I).Value = ""
END_ROW = Selection.Offset(I).Row
END_DAT = Selection.Offset(I).Value
ADD_DEF = (END_DAT - STA_DAT) / (END_ROW - STA_ROW)
For J = 1 To I - 1
Selection.Offset(J).Value = STA_DAT + ADD_DEF * J
Next J
End Sub

上記のコードを「ツール」「マクロ」「VisualBasicEditor」で起動した
VBEで「挿入」「標準モジュール」に記入し、「最初の値」にカーソルを
あわせて、「ツール」「マクロ」「マクロ」で「FNC_DEF」を実行すれば
O.K.・・・のはずです。

一回「最後の値」を探しに行き、その値と間のセルの数を調べてから、
途中を埋める処理を行う、という点がミソです。

#2です。なるほどね。確かに私でも#9さんのようにVBAでやります。

任意のセルに「最初の値」があり、そのセルと同じ列で、かつ最初の値
より下に任意の数だけ空欄をあけて、最初の値より大きい「最後の値」
があることを前提にしたVBAマクロを簡単に作ってみました。

Sub FNC_DEF()
STA_ROW = Selection.Row
STA_DAT = Selection.Value
I = 0
Do
I = I + 1
Loop While Selection.Offset(I).Value = ""
END_ROW = Selection.Offset(I).Row
END_DAT = Selectio...続きを読む

QAccessで指定する色数値の一覧ありませんか?

MsAccess 2002でフォームを作成しているのですが、フォームの色指定に使える色数値の一覧表はどこかにありませんでしょうか?

VBAを使いRGB関数で指定しても期待したとおりの色を取得することができません。
Accessで使用できる色数値の一覧を参照できるページなどご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

#1です。先程のページの最後に「このホームページで表示している色は近似色です。正確な色ではありませんので御注意下さい。」と書いてありますので、もしかしたらうまく同じ色が出ないかも知れないですね。
とりあえずカラーチャートのリンク集がありましたので見てみて下さい。
http://www2u.biglobe.ne.jp/~color/all/l_02a_chart.htm

参考URL:http://www2u.biglobe.ne.jp/~color/all/l_02a_chart.htm

QVBA セルをダブルクリック→違うセルに値をコピー

注文書を作成しています。

シート1のU4:Y34に商品コードが入っています。
U4:Y34のいずれかのセルをダブルクリックすると
B7にコピーします。
次にまた違うセルをダブルクリックすると
B7にはすでに値が入力されているのでB8へコピーと
順にコピーしたいのです。

かつ、B7~B26→E7~E26→J7~J26→M7~M26→P7~P26と
順にセルを移動させたいのです。

全くの初心者で質問も悪いかと思いますが、どなたか
お教えください。
よろしくお願い致します。

Aベストアンサー

こんばんは。

何と無く思いついたものですが一案です。

すみませんが、コメント等を余計に入れておきましたのでコードの解説
等は省略させて下さい。

' // シートモジュール
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Dim rSrc As Range
  Dim rDst As Range
  Dim r  As Range
  
  ' // マスタ範囲定義
  Set rSrc = Me.Range("U4:Y34")
  ' // 転記先範囲定義
  Set rDst = Me.Range("B7:B26,E7:E26,J7:J26,M7:M26,P7:P26")
  
  ' // Dblクリックされたセルがマスタの範囲か?
  If Not Intersect(Target, rSrc) Is Nothing Then
    ' // 転記先が既に埋まってないか?
    If Application.CountA(rDst) = rDst.Cells.Count Then
      ' // 埋まっている場合
      MsgBox "もう書けないっぽい", vbInformation
    Else
      ' // (1)とりあえず転記先範囲の先頭セルを転記先に仮設定
      Set r = rDst.Cells(1)
      ' // (2)その他空きセルを探す(空きセルのうち最初のセル)
      ' // 見つからない場合は、(1)が採用される
      On Error Resume Next
      Set r = rDst.SpecialCells(xlCellTypeBlanks).Cells(1)
      On Error GoTo 0
      ' // 転記実行
      r.Value = Target.Value
    End If
    ' // Dblクリックで編集モードになるのをキャンセル
    Cancel = True
  End If
  ' // 後始末
  Set rSrc = Nothing
  Set rDst = Nothing

End Sub

こんばんは。

何と無く思いついたものですが一案です。

すみませんが、コメント等を余計に入れておきましたのでコードの解説
等は省略させて下さい。

' // シートモジュール
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Dim rSrc As Range
  Dim rDst As Range
  Dim r  As Range
  
  ' // マスタ範囲定義
  Set rSrc = Me.Range("U4:Y34")
  ' // 転記先範囲定義
  Set rDst = Me.Range("B7:B26,E7:E26,J7:J26,M7:M26,P7:P26...続きを読む

Q一覧にある名前に該当する名前を赤くしたいのですが…

こんばんわ、いつもお世話になっています。

Excelのシートで
「シート1」に名前一覧を作り、「シート2」に名前を入れていくと「シート1」に名前がある人を入力すしたとき入力した文字を赤くしたり太字させることは可能ですか?

Aベストアンサー

Sheet1のA列を全て選択して、挿入-名前-定義で適当な名前を付けます。(例 リスト)
Sheet2のA列を全て選択して、書式-条件付き書式で「数式が」にして

=NOT(ISERROR(MATCH(A1,リスト,0)))

と入力し、書式を設定します。

これで希望のようになりますか?

QExcelでひとつ置き(A1、A3、A5・・・)に合計とかふたつ置き(A1、A4、A7・・・)に合計というのは可能なのでしょうか?

タイトルの通りなのですが、
エクセルの雛形の関係上例えば
A1に「あ」という商品の代金 A2にその消費税
A3に「い」という商品の代金 A4にその消費税…
などという入力をすることがあり、
最後に商品代金だけ、消費税だけを計算したいとき
今まではA1+A3+A5+・・・という風に手でいちいち計算していたのですが
何か利用できそうな関数・数式はないものかと思い質問しました。

同じように2つ置き(A1+A4+A7+・・・)の方法もありませんでしょうか?

Aベストアンサー

一例です。
A1:A10範囲とします。
■奇数行の計数
=SUMPRODUCT((MOD(ROW(A1:A10),2)=1)*A1:A10)
■奇数行の計数
=SUMPRODUCT((MOD(ROW(A1:A10),2)=0)*A1:A10)

■3行毎の計数
=SUMPRODUCT((MOD(ROW(A1:A10),3)=1)*A1:A10)


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

人気Q&Aランキング

おすすめ情報