| | | | 조삿갓 | 우선, 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) ⓧ삭제 ■신고 |
|
|
|
|
|
|