[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルをクリックしたら色が変わるマクロ』(たく)
D列のセルを対象でクリックしたらそのセルの色が変わるようなマクロを考えているのですが、一度クリックしてもう一度同じセルをクリックしたら消えるようには出来ないでしょうか?
ダブルクリックでのコードでは出来ることは確認出来ましたが、worksheet selectionchangeのコードでは一度別のセルをクリックしてからしか消せないのでクリックする度に付いたり消えたりさせることはないのでしょうか?
タッチパネルでの使用を考えているので、 selectionchangeの動作で考えてます。
アドバイス等ありましたらよろしくお願いします。
< 使用 Excel:Office365、使用 OS:Windows10 >
こんにちは ^^ Option Explicit
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.CountLarge > 1 Then Exit Sub If Target.Interior.ColorIndex > 0 Then Target.Interior.ColorIndex = 0 Else Target.Interior.ColorIndex = 3 End If Cancel = True End Sub
とかでも エラー処理は考えていません。。。 m(_ _)m (隠居じーさん) 2019/02/24(日) 12:48
(γ) 2019/02/24(日) 13:38
一度別のセルをクリックしてからしか消せないので
なら別のセルをクリックすれば
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target If .Column <> 4 Then Exit Sub If .Interior.ColorIndex = -4142 Then .Interior.ColorIndex = 3 Else .Interior.ColorIndex = -4142 End If Application.EnableEvents = False .Offset(1).Activate Application.EnableEvents = True End With End Sub (ピンク) 2019/02/24(日) 14:22
(もこな2) 2019/02/24(日) 14:53
>D列のセルを対象でクリックしたらそのセルの色が変わるようなマクロを考えているのですが
上にも行きたいので横にしましたぁ(^^;
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Target If .Column <> 4 Then Exit Sub If .Interior.ColorIndex = -4142 Then .Interior.ColorIndex = 3 Else .Interior.ColorIndex = -4142 End If Application.EnableEvents = False .Offset(, 1).Activate Application.EnableEvents = True End With End Sub (SoulMan) 2019/02/24(日) 14:55
もこな2さん案で、ちょっと作ってみました。 使ったのはテキストボックスで、これをセルに合わせて重ねてしまいます。 四角形とかだと、セルに書かれた文字を隠してしまうので、テキストボックスなのです。 これなら、同じセルをタッチしたつもりでも、実は2度目はテキストボックスをクリックした事になり、イベントが取れます。
【標準モジュール】 Public Const iColor = &H4040FF
Sub test() With ActiveSheet.Shapes(Application.Caller) .TopLeftCell.Select If .TopLeftCell.Interior.ColorIndex = -4142 Then .TextFrame2.TextRange.Text = .TopLeftCell.Text .Fill.Transparency = 0 .TopLeftCell.Interior.Color = iColor Else .TextFrame2.TextRange.Text = "" .Fill.Transparency = 1 .TopLeftCell.Interior.ColorIndex = -4142 End If End With End Sub
【シートモジュール】 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim iEr As Long
If Target.Column <> 4 Then Exit Sub If Target.Count <> 1 Then Exit Sub
On Error Resume Next Shapes("四角").Visible = True iEr = Err.Number On Error GoTo 0
If iEr <> 0 Then With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, Target.Left, Target.Top, Target.Width, Target.Height) .Name = "四角" .OnAction = "test" .Line.Visible = msoFalse .Fill.ForeColor.RGB = iColor .Fill.Transparency = 0 .Fill.Solid With .TextFrame2 .MarginLeft = 2 .MarginRight = 0 .MarginTop = 4 .MarginBottom = 2 .WordWrap = msoFalse .VerticalAnchor = msoAnchorMiddle End With End With End If
With ActiveSheet.Shapes("四角") With .TextFrame2 .TextRange.Font.Name = Target.Font.Name .TextRange.Font.Size = Target.Font.Size .TextRange.Text = Target.Text Select Case Target.HorizontalAlignment Case xlCenter .HorizontalAnchor = msoAnchorCenter Case Else .HorizontalAnchor = msoAnchorNone End Select End With .Left = Target.Left .Top = Target.Top .Width = Target.Width .Height = Target.Height If Target.Interior.ColorIndex = -4142 Then .TextFrame2.TextRange.Text = Target.Text .Fill.Transparency = 0 Target.Interior.Color = iColor Else .TextFrame2.TextRange.Text = "" .Fill.Transparency = 1 Target.Interior.ColorIndex = -4142 End If End With End Sub
もし、マクロ実行後にセルの大きさやフォントを変えた場合、手作業でテキストボックスを削除する必要があります。(クリック後に右クリックすると、テキストボックスが見えます)
(???) 2019/02/26(火) 16:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.