[[20200806081424]] 『VBEの修正方法を教えてください。』(素人) ページの最後に飛ぶ

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

 

『VBEの修正方法を教えてください。』(素人)

いつもお世話になっております。
Excelの勉強中ですが、まだまだ不明点多いため教えて頂きたく。

文字に合わせてWクリックをすることで〇を付けたり、消したりする方法をネットで探し、コードに張り付けたのですが、「有」「無」「可」「否」の個所を名前の管理で指定して、そこまでは順調だったのですが、2文字以上(セルの結合あり)『例:権利や更新履歴』、かつ文字に被らないように〇(オーバル)(※□でも構いません)で印をつけたいです。

コードの意味もまだまだ理解ができず、お恥ずかしいのですがどうしたら印をつけれるようになるのか教えてほしいです。よろしくお願いいたします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 'Mark の複数の範囲のセル/結合セルに Wクリックで 黒○ つける/消す
Dim Ad As String
 Dim Lp As Single, Tp As Single, Hp As Single
 Dim Ov As Oval, Mark As Range

 Set Mark = Range("有無可否") '範囲の複数指定
If Intersect(Target, Mark) Is Nothing Then Exit Sub '範囲外は無視

With Target

 Ad = .Address: Hp = .Height: Tp = .Top
 If .Height > .Width Then Hp = .Width '縦長結合の場合に備える
Lp = .Left + ((.Width / 2) - (Hp / 2))

 End With
 Cancel = True
7
 With ActiveSheet
 .Unprotect '★
 For Each Ov In .Ovals
 If Not (Intersect(Target, Ov.TopLeftCell) Is Nothing) Then '既存○検出
Ov.Delete: Ad = "": ' Exit For '◎重複があるなら外し、削除優先する
End If
 Next
 If Ad <> "" Then
 With .Ovals.Add(Lp, Tp, Hp, Hp)
 .Interior.ColorIndex = xlColorIndexNone
 .Border.Color = vbBlack ' 黒○にする
End With
 End If
 Protect , True, False, False '★
 End With

 End Sub

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


そもそも、その○印のような図形利用は不可避なんですか?
どこかのお役所に提出する書類で、そうしたことが求められている、
という事でもなければ、例えば、
塗りつぶし色とかのほうが格段に手間が掛かりませんよ?
 
されたい詳細内容にも疑問があります。
セル幅一杯に文字が入力されているとき、それに被らないようにと言われても
とても難しいのではないですか?
外のセルに掛かっても問題無い、大きな○で良いということですか?
 
コード以前のことを考えられた方がよいという印象です。

(γ) 2020/08/06(木) 09:09


〇ではなく、□でも構いません。
契約書のフォーマットを作成しているので、文字に被るのだけは避けたいです。

セル内に〇や□おさまらなくてもかまいせません。きれいな〇ではなく、オーバル(?)の楕円形でも構わないのです。

欲を言えば図形の挿入ではなく、今回のマクロのような形でWクリックで表示されたり削除したりがしたいです。(※ネットで図形のコードがあったのですが、やってみたら少しWクリックで表示・削除がやりにくかったので、こちらのコードのほうが扱いやすかったため)

そのような方法がなければ諦めます。

分かる方がいらっしゃいましたらご教示願います。
(素人) 2020/08/07(金) 08:12


>欲を言えば図形の挿入ではなく、
>今回のマクロのような形でWクリックで表示されたり削除したりがしたいです。
今回のマクロこそ、図形の挿入しているんですけどね。
.Ovals.Add(Lp, Tp, Hp, Hp) で図形の挿入しているでしょ?

文字が入っているセルに対してoval(楕円図形)を書き込めば、
当然、どこか文字に掛かってきますよ。
何か、話が通じていないですね。
(そもそも、対象セルにはどの程度の文字数が入っているんですか?
 同一セルに図形なり何なりを挿入しないといけないのですか?)

文字に掛からないことを最優先するなら、Rectangleと言うことかも知れないが、
それなら、太罫線を使うべきです。
これなら、図形と違って、特定の図形の指定をしなくて済む分、
書き込みや消去の操作が簡単にできます。

(γ) 2020/08/07(金) 09:42


見せたり消したりする図形はあらかじめつくっておいてから、その図形にこんなマクロを登録するとか。

    With ActiveSheet.Shapes(Application.Caller).Line
        If .Visible Then
            .Visible = msoFalse
        Else
            .Visible = msoTrue
        End If
    End With

(ゼットライザー) 2020/08/07(金) 14:44


コメント返信:

[ 一覧(最新更新順) ]


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