[[20181011123806]] 『「結合セルに」[デッキィ] について』(デッキィ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「結合セルに」[デッキィ] について』(デッキィ)

投稿
[[20091210014933]] 『結合セルに』(デッキィ) 
について...

久しぶりにお世話になります。

以前こちらで下記コードを教えていただきました。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim idx As Variant
    Dim myarray As Variant
    If Intersect(Target, Range("C3:AZ100")) Is Nothing Then Exit Sub
    If Target.MergeCells Then Set Target = Target.Cells(1, 1)
    myarray = Array("", "○", "◎")
    Cancel = True
    idx = Application.Match(Target.Value, myarray, 0)
    If IsError(idx) Then idx = 1 Else idx = idx Mod (UBound(myarray) + 1)
    Target.Value = myarray(idx)
    Erase myarray
 End Sub

これはそのままに新たにA3:B100をダブルクリックした場合、
("", "△", "×")が表示される様にしたいのですが、どの様に修正して良いのか
分かりません。

どなたか教えて下さい。
よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


9年前ですし、当時回答された方は、来てくれないでしょう。 9年間、自力解決できるような成長が無かったということですか。 残念です。

Targetをプロシジャ内で変えているのが好みではないのですが、とりあえず少ない修正で済ませる案なぞ。 ★印の行だけ変えてます。

 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim idx As Variant
    Dim myarray As Variant
    If Intersect(Target, Range("A3:AZ100")) Is Nothing Then Exit Sub    '★
    If Target.MergeCells Then Set Target = Target.Cells(1, 1)
    myarray = IIf(Target.Column < 3, Array("", "△", "×"), Array("", "○", "◎"))  '★
    Cancel = True
    idx = Application.Match(Target.Value, myarray, 0)
    If IsError(idx) Then idx = 1 Else idx = idx Mod (UBound(myarray) + 1)
    Target.Value = myarray(idx)
    Erase myarray
 End Sub

A,B列は処理対象外にしていた箇所を、A,B列も含めるようにした事と、A,B列とC列以降の場合で文字列を変えた事。 たったこれだけの話ですよ。
(???) 2018/10/11(木) 13:18


早速の回答ありがとうございます。

たったこれだけの事が理解できず申し訳ありません。

無事にできるようになりました。

今後に参考に教えて頂きたいのですが、セルの範囲を細かく指定したい場合
Column<3で指定されていますが、セル番地で指定する方法は有りますか?

Target, Range("A3:B100")

に書き換えたら、できるのかと思いましたがコンパイルエラーになりました。

おかと違いでしたらすいません。
(デッキィ) 2018/10/11(木) 14:36


2分岐だけなので Iifで簡単に片づけましたが、普通にIf文でも構いませんし、Select Case文で分岐しても良いです。 この条件ならこっちの文字列で、違うならあっちの文字列、としたいだけですから。

そして、セルがColumnプロパティのような単純列で決まらないならば、Addressプロパティで $A$1 とか判りますから、こっちをSelect Case文でも使って区別すれば良いでしょう。 他にも、範囲内かどうかIntersect文で調べているわけで、これを応用しても良いですし、ColumnとRowの2つのプロパティから判定しても良いです。 いろいろ調べて、試してみてください。
(???) 2018/10/11(木) 16:01


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.