programing

VBA를 사용하지 않고 Excel에서 활성 행/열을 강조 표시하시겠습니까?

abcjava 2023. 5. 16. 22:03
반응형

VBA를 사용하지 않고 Excel에서 활성 행/열을 강조 표시하시겠습니까?

제가 달성하고자 하는 것은 활성 행 또는 열을 강조 표시하는 것입니다. VBA 솔루션을 사용했습니다.Selection_change이벤트가 사용되었습니다. 워크시트의 변경 내용을 취소할 기회를 잃고 있습니다.

VBA를 사용하지 않고 활성 행/열을 강조 표시할 수 있는 방법이 있습니까?

조건부 서식을 사용하는 것이 가장 좋습니다.

두 개의 공식 기반 규칙을 만듭니다.

  1. =ROW()=CELL("row")
  2. =COLUMN()=CELL("col")

에 표시된 대로:

여기에 이미지 설명 입력

유일한 단점은 셀을 선택할 때마다 시트를 다시 계산해야 한다는 것입니다("F9"를 누를 수 있습니다).

행을 표시할 수 .Shift+Space에 현사(열)이 있음Ctrl+Space.

Excel, Google Sheets, OpenOffice Calc 및 Gnumeric(내가 시도한 모든 프로그램)에서 작동하는 것 같습니다.(https://productforums.google.com/forum/ #!topic/docs/gJh1rLU9IRA에서 이 점을 지적해 주셔서 감사합니다.)

안타깝게도 공식 및 매크로 기반 솔루션(나에게 효과가 있었던 BTW)만큼 좋지는 않습니다. 커서를 이동하면 강조 표시가 사라지지만 매번 설정하거나 템플릿을 만들 필요가 없기 때문입니다(작업할 수 없었습니다).

또한 다른 솔루션의 조건부 형식 지정 공식(Excel의 경우)을 단일 규칙에 대한 단일 공식으로 단순화할 수 있습니다.

=OR(CELL("col")=COLUMN(),CELL("row")=ROW())

이런 식으로 하면 강조 표시된 열과 행이 동일한 형식을 사용해야 하지만 대부분의 경우에는 이 형식이 적절하고 작업량이 적습니다.(간단한 공식은 https://trumpexcel.com/highlight-active-row-column-excel/ 덕분입니다.)

VBA를 사용하지 않고는 수행할 수 없다고 생각하지만 실행 취소 기록을 잃지 않고 수행할 수 있습니다.

VBA에서 워크시트 개체에 다음을 추가합니다.

Public SelectedRow as Integer
Public SelectedCol as Integer

Private Sub Worksheet_SelectionChange(ByVal Target as Range)
    SelectedRow = Target.Row
    SelectedCol = Target.Column
    Application.CalculateFull ''// this forces all formulas to update
End Sub

새 VBA 모듈을 생성하고 다음을 추가합니다.

Public function HighlightSelection(ByVal Target as Range) as Boolean
    HighlightSelection = (Target.Row = Sheet1.SelectedRow) Or _
        (Target.Column = Sheet1.SelectedCol)
End Function

마지막으로 조건부 형식을 사용하여 '선택 강조' 공식에 따라 셀을 강조 표시합니다.

조건부 서식 규칙의 화면 캡처

우선 감사합니다!Selection_Change를 사용하고 셀 내용을 변경하여 셀을 강조 표시하는 솔루션을 방금 만들었습니다.실행 취소가 비활성화될 줄은 몰랐습니다.조건부 포맷인 Cell()과 Selection_Change 이벤트를 결합하여 사용하는 방법을 찾았습니다.이렇게 했어요.

  • 셀 A1에서 저는 공식 = 셀("행")을 넣었습니다.
  • 2행이 완전히 비어 있습니다.
  • 3행에는 머리글이 포함되어 있습니다.
  • 4열 아래가 데이터입니다.
  • A1의 공식을 업데이트하려면 시트를 다시 계산해야 합니다.F9로 할 수는 있지만, 실행할 코드는 다음과 같은 것으로 Selection_Change 이벤트를 만들었습니다.이렇게 하면 사용자가 이동할 때마다 수행되며 Selection_Change(선택_변경)가 시트의 값/형식 등을 변경하지 않으므로 Undo(실행 취소)가 비활성화되지 않습니다.
  • 이제 조건부 형식을 입력하여 셀 A1과 동일한 행을 가진 셀을 강조 표시합니다.
    • 전체 열 B 선택
    • 조건부 형식 지정, 규칙 관리, 새 규칙, 수식을 사용하여 형식 지정할 셀 결정
    • 다음 공식 입력: =행(B1)=$A$1
    • 형식을 클릭하고 강조 표시할 방법을 선택합니다.
    • 준비. 팝업에서 확인을 누릅니다.

이것은 나에게 효과가 있습니다.

Range.Calculate 중입니다.ActiveWindow.SmallScroll유일한 단점은 새로 선택한 후 화면이 몇 초 동안 깜박거린다는 것입니다.수동으로 스크롤하는 동안 새 선택 항목이 화면(창) 밖으로 완전히 이동해야 작동합니다.따라서 아래 코드에서는 화면 보기에서 보이는 모든 행을 제거할 수 있을 만큼 스크롤한 다음 같은 위치로 다시 스크롤하여 조건부 형식의 화면 새로 고침을 수행해야 합니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ScreenUpdating = False
ActiveWindow.SmallScroll Down:=150 'change these values to total rows displayed on screen
ActiveWindow.SmallScroll Down:=-150 'change these values to total rows displayed on screen
'DoEvents 'unable to use this to remove the screen flicker
ScreenUpdating = True
End Sub

학점:로리 아치볼드 https://www.experts-exchange.com/questions/28275889/When-is-excel-conditional-formatting-refreshed.html

조건부 형식을 사용하면 전체 행과 열을 강조 표시하는 대신 아래 코드로 셀 왼쪽의 행과 셀 위의 열을 강조 표시할 수 있습니다.

=OR(AND(CELL("col")=COLUMN();(CELL("row")-1)>=ROW());AND(CELL("col")>=COLUMN();(CELL("row")-1)=ROW()))

Selection_change 이벤트 시트에서 다음을 호출합니다.

Function highlight_Row(rngTarget As Range)
    Dim strRangeRow As String
    strRangeRow = rngTarget.Row
    strRangeRow = strRangeRow & ":" & strRangeRow
    Rows(strRangeRow).Select
    rngTarget.Activate
End Function

이것은 명확성을 위한 긴 형식입니다.

또한 (F9 대신) 새로 고침 시트에 이 코드를 vba에 추가합니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.CutCopyMode = False Then
Application.Calculate
End If
End Sub

활성 열과 행을 강조 표시하려면 클릭할 때까지 셀을 색칠하지 않고 전체 열과 행을 색칠하지 않고 Excel에서 조건부 형식의 공식을 사용합니다.

=OR(AND(CELL("col")=COLUMN(),(CELL("row")-1)>=ROW()),AND(CELL("row")=ROW(),(CELL("col")-1)>=COLUMN()))

(포맷할) 숫자를 다른 열의 자체의 소계로 나누면 숨겨진 항목에 오류가 발생하고 등급이 지정된 색상 척도로 런타임 조건부 서식을 지정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/22349424/highlight-active-row-column-in-excel-without-using-vba

반응형