2016-08-17 2 views
1

특정 셀의 변경 사항을 확인하는 매크로를 작성했습니다. 셀에 새 값이 특정 기준을 충족하지 않는 경우, 편집 모드에서 셀을 입력하고 해당 셀 사용하는 키보드 단축키의 모든 텍스트 선택 :셀 편집 모드로 이동하여 VBA로 모든 셀 텍스트 선택

Application.SendKeys ("{HOME}+{END}") 

이 항상 입력 편집 모드,하지만 종종 선택 실패 텍스트 나는 좀 더 신뢰할만한 것을 찾고 있습니다. 어떤 아이디어?

가 여기에 전체 매크로입니다 : 슬프게도

Private Sub Worksheet_Change(ByVal Target As Range) 

' ------------------------------- 
' Only run the macro if a single cell is selected 
    If Target.Cells.CountLarge > 1 Then Exit Sub 

' ------------------------------- 
' Declare variables 
    Dim cell As Range 
    Dim AccountToFind As String 

' ------------------------------- 
' Assign values to shared variables 
    AccountToFind = Target.Value 

' ------------------------------- 
' Validate change in HEADER, column D 
    If Not Intersect(Target, Target.Worksheet.Range("D:D")) Is Nothing And Target.Value <> "" Then 

     For Each cell In Sheets("_coding references").Range("AccountsPayable[NAME]") 
      If cell.Value = AccountToFind Then Exit Sub ' passed validation 
     Next cell 

     Target.Select 

     MsgBox ("'" & AccountToFind & "'" & vbNewLine & vbNewLine & "This is not a listed A/P account!") 

' -------------------------------------------------------------- 
' -------------------------------------------------------------- 
' HERE'S THE PROBLEMATIC CODE 
' -------------------------------------------------------------- 
      Application.SendKeys ("{F2}{HOME}+{END}") 
' -------------------------------------------------------------- 
' -------------------------------------------------------------- 
' -------------------------------------------------------------- 
    End If 
End Sub 

답변

1

,이 이벤트를 잡을 수있는 방법이 없다, 갈 유일한 방법은 "전송 키"이고 그들 모두 있기 때문에 동시에 눌러야 할 이것은 당신이 할 수있는 내 지식 - -to 가장 좋은 해결 방법 중 하나가 sleep or wait 기능을 사용할 수 있습니다

Application.SendKeys ("{F2}{HOME}") 
Application.Wait Now + TimeValue("00:00:01") 
Application.SendKeys ("+{END}") 

설명
송신 키는 프로세서 속도에 의존합니다. 코드가 잘 작성되어 있어도 항상 모든 키를 동시에 "누르십시오"라고 생각해야한다고하더라도 항상 가변적입니다.