나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 황동준 (bogri2000)

추천:  0
파일:     조회:  296
제목:   [RE]키보드의 INSERT 키 기능을 VBA로 제어하기?
     
  액세스 2016

안녕하세요.
여러 튜터님들의 도움으로 막연했던 과제를 수월하게 해결하고 해 왔습니다.
하여 오늘도 한 가지 신세를 지고자 합니다.

다름 아니라...
키보드의 [INSERT] 키는
새로운 문자를 입력함에 있어
기존의 문자를 삽입(우측으로 밀어내며 입력하기)할 것인지...
기존의 문자를 수정(우측을 지우며 입력하기)할 것인지...
선택하는 키인데...

VBA를 통하여
현재의 설정 상태가 [삽입] 상태인지 [수정] 상태인지 파악하고
원하는 바에 따라 이를 제어(변경)하는 방법이 없을까해서 질문을 올립니다.

그럼... 이만...
목, 금 남은 이틀 잘 마무리하시고
즐거운 주말되시기를 바랍니다.
==============[우견취연님 글에 대한 답변입니다]==============

현재 커서 이후로 텍스트가 선택되어 있다면 편집상태를 '수정모드'로 간주하고 아래와 같은 코드로 확인합니다.

Private Sub Text0_GotFocus()
    If Me.Text0.SelLength > 0 Then
        Debug.Print "수정모드"
    Else
        Debug.Print "삽입모드"
    End If
End Sub

탭으로 포커스가 이동 되어 올 경우 해당 텍스트가 전체 선택됩니다.
따라서 편집모드와 상관없이 글자 길이가 인식되므로 포커스가 왔을 때 커서를 제일 앞으로 보내고 난 뒤 체크 합니다.
    Me.Text0.SelStart = 0

on Click 이벤트에서도 임의의 위치를 클릭 하여 확인 할 수 있지만, 텍스트의 마지막을 클릭하면 '수정모드'인 상태여도 선택될 텍스트가 없기 때문에 '삽입모드'로 간주 합니다.
이에 대한 경우의 수가 있을 경우 별도로 커서를 앞으로 보내 확인 하는 과정이 필요 합니다.

편집모드를 스위치 할 경우 센드키를 이용하여 인서트 키를 누르게 합니다.
    SendKeys "{INSERT}"
 
[불량 게시물 신고]  
황동준API를 이용하여 현재 편집상태를 확인 하고, 텍스트 상자내의 텍스트 중 수정하려는 부분을 클릭 했을 때 무조건 수정 모드로 변경 함

Option Compare Database
Private Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

Private Sub Text0_Click()
    If GetKeyState(vbKeyInsert) = 0 Then SendKeys "{INSERT}"
End Sub
04-13 (13:32)
삭제 ■신고
우견취연대단히 감사합니다.
차근차근 적용해 보도록 하겠습니다.
거듭 감사드립니다.
04-19 (11:14)
삭제 ■신고
        
  

작성일 : 2024-04-11(12:36)
최종수정일 : 2024-04-11(13:19)
 


 ◎ 관련글

  제 목   작성자   날짜
키보드의 INSERT 키 기능을 VBA로 제어하기? 우견취연 2024-04-11
[RE]키보드의 INSERT 키 기능을 VBA로 제어하기? 황동준 2024-04-11