2015-01-10 6 views
2

: 컬럼/셀을 통해 변경할 때키보드 입력을 통해를 SelectionChange에 셀 범위를 활성화 I 다음 엑셀 VBA 코드에 의해 워크 상에 소정 셀 영역을 활성화

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
' msgbox("Change recognized") 
If Sh.Name <> "Spielfeld" Then 
    If ActiveCell.Column > 1 Then 
     Dim UserSelection As Range 
     Set UserSelection = Sh.Range(Cells(1, ActiveCell.Column), Cells(16, ActiveCell.Column)) 
     UserSelection.Activate 
    End If 
End If 
End Sub 

코드는 잘 작동 마우스 입력. 하지만 그냥 왼쪽 또는 오른쪽 화살표 키를 누르면 활성 셀/활성 열이 변경됩니다 정의 된 UserSelection을 선택하지 않고! 그럼에도 불구하고 화살표 키를 누르면 하위 자체가 항상 활성화됩니다 (화살표 키를 통해 셀을 변경하더라도 메시지 상자가 나타납니다).
화살표 키를 사용하여 열을 변경할 때 내 선택이 자동으로 업데이트되지 않는 이유는 누구에게 말해 줄 수 있습니까? 어떻게해야합니까?

+0

활성화하지만, 왼쪽/오른쪽/최대가 나는 또한 알았어 야 1. 행을 선택 기본을하고있다 오히려 보다 선택해야합니다 당신은 클릭하면 그 행 1 어디서나 작동하지 않습니다. – peege

+0

Shift + Arrow를 사용하여 (대부분의 경우 시간 문제가 중요 함)주의를 기울이고 있습니다. – peege

+0

행이 1이기 때문에 어떤 이유로이 문제가 발생합니다. 행 1 인 경우를 처리하고 난 후 수동으로 범위를 설정하고 UserSelection을 사용하고 주소를 확인하기 때문에 매우 이상합니다. 맞습니다.하지만 그 범위를 활성화하려고 할 때, 그것이 Row1 Target에서 왔을 때, 그것을 가지고 있지 않습니다. – peege

답변

1

당신은 아래쪽 화살표가 작동

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
If Sh.Name <> "Spielfeld" Then 
    If ActiveCell.Column > 1 Then 
     Dim UserSelection As Range 
     Set UserSelection = Sh.Range(Cells(1, ActiveCell.Column), Cells(16, ActiveCell.Column)) 
     Application.EnableEvents = False 
      UserSelection.Select 
     Application.EnableEvents = True 
    End If 
End If 
End Sub 
+0

왜 Row1의 셀을 클릭하는 것을 포함하여 Row1을 사용하여 들어오는 범위를 구체적으로 거부합니까? – peege

+0

@p 시스템 ** Column 1 **은 영향을받지 않습니다. 이 말이 맞습니다. * 화살표 * 키를 사용하면 선택한 블록을 오른쪽이나 왼쪽으로 이동할 수 있습니다. * Enter * 및 * Tab 키를 사용하면 선택한 블록 내에서 ** 선택 사항을 변경할 수 있습니다. –

+0

당신의 솔루션은 완벽합니다. 일반적으로 입력 코드의 target.address가 행 1에서 발생한 경우를 제외하고 모든 경우에 OP 코드가 작동하는지 묻는 중입니다. 화살표 키는 선택한 블록을 취합니다. $ B $ 1 : $ B $ 16부터 병합 된 셀이 기본적으로 가장 낮은 부분으로 설정되고 B1 : B16에서 오른쪽으로 이동하면 C1로 이동합니다. 따라서 들어오는 target.address는 1 행이고 코드가 작동하지 않습니다. 선택과 활성화에 차이가 있음을 알 수 있습니다. 그러나 그 차이를 이해할 수는 있지만 행 1이 아닌 모든 행에 대해 왜 효과가 있었는지 알 수는 없습니다. – peege