dポイントプレゼントキャンペーン実施中!

選択したセルに塗りつぶしを設定するマクロを組んでボタンに登録していますが、塗りつぶし不可のセルを選択してボタンをクリックした場合は塗りつぶしのマクロが実行できないようにする、といったことはできますか?
よろしくお願いいたします。

A 回答 (6件)

以下は特定の範囲を除いてセルの背景色を塗るマクロです。

予め塗りつぶしたくないセル範囲に「塗りつぶし不可」という名前を定義してから使用して下さい。

Sub Macro9()
Dim iRng, tCell As Range
If TypeName(Selection) = "Range" Then
For Each tCell In Selection
Set iRng = Application.Intersect(tCell, Range("塗りつぶし不可"))
If iRng Is Nothing Then
tCell.Interior.ColorIndex = 3
End If
Next
End If
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
うまくいきました!
本当にありがとうございました。

お礼日時:2006/08/27 23:27

こんばんは。



#3 のWendy02です。
今、たまたま読み直してみましてマクロを作ってみました。ただ、#3に書いたことを撤回するわけではありませんので、内容はまだ生きています。


試してみれば分かりますが、以下のようにすると、まるで、トランプの『神経衰弱』か、地雷を埋め込んだようです。


'シートモジュール
'---------------------------------------------------
Private Sub CommandButton1_Click()
'塗りつぶし不可ボタン (KeepOut)
Dim strNameRange As String
Dim dummy As Variant
Dim buf As String

On Error Resume Next
 dummy = Application.Names("KeepOut")
On Error GoTo 0
If dummy = Empty Then
 Application.Names.Add "KeepOut", RefersTo:="=" & Selection.Address
Else
 strNameRange = Application.Names("KeepOut").RefersTo
 If Intersect(Range(strNameRange), Selection) Is Nothing Then
  buf = Replace(Mid(strNameRange, 2), ActiveSheet.Name & "!", "")
  Application.Names("KeepOut").RefersTo = "=" & Selection.Address & "," & buf
 End If
End If
 dummy = Empty
End Sub
'---------------------------------------------------
Private Sub CommandButton2_Click()
'塗りつぶしマクロ
Dim dummy As Variant
 On Error Resume Next
  dummy = Application.Names("KeepOut")
 On Error GoTo 0
 If dummy = Empty Then
   Selection.Interior.ColorIndex = 34 '水色
 ElseIf Intersect(Range("KeepOut"), Selection) Is Nothing Then
    Selection.Interior.ColorIndex = 34
 Else
   MsgBox "塗りつぶし禁止区域を含んでいますので、取りやめです。", vbInformation
 End If
 dummy = Empty
End Sub
    • good
    • 0
この回答へのお礼

2度のご回答ありがとうございました。
VBAのあまり知識がないので、もっと勉強してから、いただいたモジュールを試してみます。
本当にありがとうございました。

お礼日時:2006/08/27 23:36

つーか塗りつぶし不可か、可か、どちらか一方(簡単な方)のセル範囲に名前を付けておけば十分でしょ。

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

ご回答ありがとうございました。もっと勉強して、みなさんにいただいたアドバイスを試してみます。ありがとうございました。

お礼日時:2006/08/27 23:19

こんにちは。



Yes/No だったら、Yes で、「出来ます」というだけです。

何をもって、「塗りつぶし不可」にするか、ではないでしょうか?

特定の列とか、行とか、セルを予め登録しておくのか、何かの文字が入っているのか、既に色がついているのか、その条件があると思います。それ以上は、今のところ、分かりません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。以下のお礼のとおり、あまりVBAの知識がありません。何を持って、というところは
例えばスケジュール表などを作成していて、その表内のセルしか塗りつぶしのボタン(マクロ)が使えないようにするという事です。ですので、「セルをあらかじめ登録しておく」ということになるのかもしれません。もっと勉強します。ありがとうございました。

お礼日時:2006/08/27 23:17

案1)セルを保護し保護されたれるセルは塗りつぶし不可



案2)先に白色で塗りつぶしをしておき白色で塗りつぶされたセルは塗りつぶし不可

と言うのはどうでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。VBAの知識もあまりなく、「塗りつぶし不可」という設定を具体的にどこで行うのかすら分かりませんでした。勉強して試してみます。ありがとうございました。

お礼日時:2006/08/27 23:14

できますよ。


「塗りつぶし不可のセル」かどうかを判定できるように、「塗りつぶし不可」のフラグを決めてやればいいだけです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。VBAの知識があまりなく、「フラグを決めてやる」というところから分かりません。勉強して試してみます。ありがとうございました。

お礼日時:2006/08/27 23:11

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

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