VBA에서 형식에 관한 문의가 있어서 남기게 되었습니다.
예를들어
If txtID.value = sht_T_지출결의서리스트.Cells(1, sht_T_지출결의서리스트.columns.count).End(xlToLeft).value Then이런 내용의 코드가 있을 때 txtID.value의 형식은 string 으로 됩니다.
txtID.value도 숫자이고
sht_T_지출결의서리스트.Cells(1, sht_T_지출결의서리스트.columns.count).End(xlToLeft).value도 숫자인데
txtID.value의 형식은 string으로 되고
sht_T_지출결의서리스트.Cells(1, sht_T_지출결의서리스트.columns.count).End(xlToLeft).value의 형식은 double로 되어서 CDbl(txtID.value) 로 작성해야 코드가 진행이 됩니다...
위의 있는 코드로 작성해서 진행될 수 있게 하는 방법은 없을까요..?!
그리고 위의 코드와 같은 폼에서 진행되는 아래의 코드입니다.
If sht_T_지출결의서항목.Cells(i, 2) = CStr(txtID.value)여기서는 오히려 txtID.value string 형식임에도 불구하고 Cstr을 붙여줘야만 코드가 진행이 되는데 도대체 이 문제가 왜 발생하고 해결방법은 없는지 너무 궁금합니다..

A1셀에 숫자 1이 들어 있다면 1은 Double형식이 될 겁니다.
Me.TextBox1.Value = Range("A1").Value 나 Me.TextBox1 = Range("A1")은 자동으로 Type변환이 되어 들어 갑니다.
IF문에서 Me.TextBox1.Value = Range("A1").Value 는 Type이 다르므로 항상 False가 될 겁니다.
그런데 둘중 어느 하나라도 타입변환 함수를 사용하면 자동으로 타입전환 비교를 하는 듯 합니다.
심지어 CInt(Range("A1").Value를 해도 True가 됩니다.
오빠두엑셀 유튜브에서 보다보면 타입변환 함수가 없어도 자동으로 값에 맞게 날짜로 인식했다 숫자로 인식했다 문자로 인식했다 하는거 같은데 그런거는 자동으로 안되는걸까요?!
명확히 명문화가 되어 있지 않아서 IF문이나 비교 연산자 외에 예외가 있는지 계속 숙지해야 할 듯 합니다.