Excel VBA에서 마우스로 깜박임과 선택할 수 있는 표 만들기
개요
클릭이나 드래그로 선택하고 있는 것처럼 보이는 표를 매크로로 만든다.
보이는 것만으로 내부에서 뭔가 데이터를 유지하는 것은 아니다.
코드
Sheet1Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const ROW_START As Long = 3 '表のデータが始まる行
Const COL_START As Long = 2 ' " 始まる列
Const COL_END As Long = 4 ' " 終わる列
Const COLOR_OFF As Long = &HFFFFFF '非選択状態のセルの色
Const COLOR_ON As Long = 14083324 '選択状態のセルの色
Const COL_SELECT As Long = 2 '選択状態かどうかの値を入れる列
Const COL_TARGET As Long = 3 '最終行を取得するための列
'表の外なら何もせずに終了
If Target.Row + Target.Rows.Count - 1 < ROW_START Then Exit Sub
If Target.Column + Target.Columns.Count - 1 < COL_START Then Exit Sub
If COL_END < Target.Column Then Exit Sub
With Sheet1
'表の最終行より下なら終了
Dim lr As Long
lr = .Cells(.Rows.Count, COL_TARGET).End(xlUp).Row
If Target.Row > lr Then Exit Sub
'反転させる行を特定
Dim sr As Long
Dim er As Long
sr = WorksheetFunction.Max(Target.Row, ROW_START)
er = WorksheetFunction.Min(Target.Row + Target.Rows.Count - 1, lr)
'反転
If .Cells(sr, COL_TARGET).Interior.Color <> COLOR_OFF Then
.Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_OFF
.Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = ""
Else
.Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_ON
.Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = "v"
End If
End With
End Sub
기타
명부라든가로부터 GUI인 느낌으로 선택해 주실 때에 딱 좋다.
첨부 사진의 「선택」열은, 폰트를 "Magneto"로 하고 「v」를 체크 마크 같게 보이도록 일 연구.
Reference
이 문제에 관하여(Excel VBA에서 마우스로 깜박임과 선택할 수 있는 표 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hinkymargin/items/9a58b019967cd33a893f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Sheet1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const ROW_START As Long = 3 '表のデータが始まる行
Const COL_START As Long = 2 ' " 始まる列
Const COL_END As Long = 4 ' " 終わる列
Const COLOR_OFF As Long = &HFFFFFF '非選択状態のセルの色
Const COLOR_ON As Long = 14083324 '選択状態のセルの色
Const COL_SELECT As Long = 2 '選択状態かどうかの値を入れる列
Const COL_TARGET As Long = 3 '最終行を取得するための列
'表の外なら何もせずに終了
If Target.Row + Target.Rows.Count - 1 < ROW_START Then Exit Sub
If Target.Column + Target.Columns.Count - 1 < COL_START Then Exit Sub
If COL_END < Target.Column Then Exit Sub
With Sheet1
'表の最終行より下なら終了
Dim lr As Long
lr = .Cells(.Rows.Count, COL_TARGET).End(xlUp).Row
If Target.Row > lr Then Exit Sub
'反転させる行を特定
Dim sr As Long
Dim er As Long
sr = WorksheetFunction.Max(Target.Row, ROW_START)
er = WorksheetFunction.Min(Target.Row + Target.Rows.Count - 1, lr)
'反転
If .Cells(sr, COL_TARGET).Interior.Color <> COLOR_OFF Then
.Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_OFF
.Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = ""
Else
.Range(.Cells(sr, COL_START), .Cells(er, COL_END)).Interior.Color = COLOR_ON
.Range(.Cells(sr, COL_SELECT), .Cells(er, COL_SELECT)).Value = "v"
End If
End With
End Sub
기타
명부라든가로부터 GUI인 느낌으로 선택해 주실 때에 딱 좋다.
첨부 사진의 「선택」열은, 폰트를 "Magneto"로 하고 「v」를 체크 마크 같게 보이도록 일 연구.
Reference
이 문제에 관하여(Excel VBA에서 마우스로 깜박임과 선택할 수 있는 표 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hinkymargin/items/9a58b019967cd33a893f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Excel VBA에서 마우스로 깜박임과 선택할 수 있는 표 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hinkymargin/items/9a58b019967cd33a893f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)