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

작성자:  

 강윤식 (kangys0220)

추천:  2
파일:     Book1(11).xlsm (14.3KB) 조회:  7968
제목:   (엑셀 vba) 텍스트박스에 입력된 텍스트를 셀로 복사하는 법 질문입니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(2007):

* 아래줄에 질문을 작성하세요 >>

엑셀에서 텍스트박스 TextBox1의 입력된 텍스트를

버튼을 클릭하면 셀 A1에도 내용이 입력되게 하려고 하는데 

424 오류가 나는데 어떻게 수정해야 할까요?

검색해도 제가 원하는 내용을 찾기가 힘드네요 ㅠ
사용중인 엑셀버전은 2007, 원도우 10버전을 사용중입니다.
 
[불량 게시물 신고]  
조삿갓우선, TextBox1.Value 라는 속성은 존재하지 않습니다.

사용자정의폼에 설치한 TextBox의 경우에는 Text 속성을 참조하면 입력된 문자열을 반환해 줍니다(또는 Text 속성이 디폴트 속성이기 때문에 그냥 텍스트 박스 이름만 써도 됩니다.)

즉, Range("A1").Value = Val(UserForm1.TextBox1.Text)
또는 Range("A1") = Val(UserForm1.TextBox1)
로 쓰면 원하는 결과를 얻을 수 있습니다만

워크시트에 삽입된 그림 개체로서의 텍스트박스 안에 있는
텍스트 문자열을 조회하는 방법은
현재까지 공부한 제 실력으로는 모르겠습니다.

현재 삽입하신 개체는 VBA에서
ActiveSheet.Shapes.Range(Array("TextBox1")).Select
로 선택하거나 조회가 가능하고
위와 같이 선택한 후에는
Selection.ShapeRange 개체의 속성 중
Fill, Left, Top, Width 등과 같이
색상이나 크기, 위치 등을 조회하거나 바꿀 수는 있는데

안에 입력된 텍스트 내용은
아무리 공부해봐도 모르겠습니다.

다른 고수 분께 패쓰~

08-23 (19:53)
삭제 ■신고
조삿갓앗, 드디어 알아냈습니다.
매크로 기록 기능을 쓰면 되는데
공연히 온라인 도움말만 열씸히 써핑하고 있었다는...

Sub 빗면2_Click()

ActiveSheet.Shapes.Range(Array("TextBox1")).Select
Range("A1").Value = Val(Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text)

End Sub

희한한 거는 Shapes가 아닌 다른 개체들의 경우라면

Range("A1").Value = Val(ActiveSheet.Shapes.Range(Array("TextBox1")).ShapeRange(1).TextFrame2.TextRange.Characters.Text)

이렇게 한 줄로 축약해도 될 것 같은데

Shapes 개체의 경우에는 여지없이 오류가 발생합니다.

꼭 Select 해 주고 나서 하위 개체나 속성을 다시 지정해야 합니다.
08-23 (20:04)
삭제 ■신고
강윤식조삿갓님 답변 감사드립니다
올려주신 내용으로 했을경우 숫자는 잘 나오는데 
영어, 한글을 입력했을시 0으로 나오네요

올려주신 코드를 참조하여 
Set myDocument = Worksheets(1)
Range("B1").Value = myDocument.Shapes("TextBox1").TextFrame2.TextRange.Characters.Text
이렇게 했을 경우 정확한 값이 넘어가네요~

다시 한번 답변 감사드립니다.~~~
08-24 (10:32)
삭제 ■신고
조삿갓거야 당연한 거 아닌가요?
우변에 VAL 함수를 일부러 쓰신 것이 아니었나요?

텍스트 내용을 그대로 옮기려면 말씀하신대로 우변에 Val 함수를 쓰지 마시고 옷을 벗겨서 써 주어야 합니다,

Val 함수는 문자열 형태로 되어 있는 수치 데이터를
사칙연산이 가능한 수치 값으로 바꾸어주는 함수이고
당연히 해당 문자열의 왼쪽에 있는 유효한 숫자까지만 변환해주고 나머지 문자들은 무시합니다. 유효한 숫자가 없으면 0을 반환하는 게 당연하고요.

Val("123") -> 수치 123을 반환

Val(123) -> 123은 문자열이 아닌 원래 수치 데이터이므로 오류 발생

Val("010-1234-5678") -> 수치 값 10을 반환
이 때 - 기호는 뺄셈으로 인식하지 않고 의미 없는 문자로 간주합니다. 그리고 그 이후의 숫자들도 모두 무시됩니다.
수치 값 010은 10이니까....

Val("abc999") -> 유효한 숫자가 없으므로 0을 반환
문자 뒤에 있는 999 역시 이 경우는 무시됨
08-24 (15:21)
삭제 ■신고
        
  

작성일 : 2017-08-23(19:16)
최종수정일 : 2017-08-23(19:16)