幼稚園時代「何組」でしたか?

動作としてはダブルクリックした場合に「〇」→「△」→「×」→「〇」...
と、ループするようなプログラムなのですが、結合セルの場合に実行時エラー13が出てしまいます。
初心者のためどこを変えていいやら分からず途方に暮れております。
ご助力お願い致します。
下記記載コード

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A1:AZ1000")) Is Nothing Then Exit Sub
With Target
Select Case .Value
Case "〇"
.Value = "△"
Cells(Target.Row, Target.Column).Font.Color = vbYellow
Cancel = True
Case "△"
.Value = "×"
Cells(Target.Row, Target.Column).Font.Color = vbRed
Cancel = True
Case "×"
.Value = "〇"
Cells(Target.Row, Target.Column).Font.Color = vbBlue
Cancel = True
End Select
End With
End Sub

A 回答 (2件)

こんにちは



ダブルクリックするセルが結合セルということでしょうか?

その場合は引数Targetにセル範囲が渡されますので、位置のチェックや、値のチェックで意図通りの結果にならなかったり、エラーになる可能性があります。
セル範囲の表示セル(=代表セル)は範囲の左上のセルになりますので、Targetを単一セルに置き換えてから、同じ処理を行えばよいと思われます。
具体的には
 Set t1 = Target.Cells(1, 1)
とか
 Set t1 = Target(1)
などとして、一旦、置き換えてから処理すれば良いでしょう。
    • good
    • 0

With Target



With Target(1)

これでイケると思う。

ちなみに、「Cells(Target.Row, Target.Column).Font.Color = vbYellow」って書いているところがありますが、どうして「.Value = "△"」みたいに省略しないんですか?
    • good
    • 2

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

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