.text, .value 및 .value2의 차이점은 무엇입니까?
.text,.value , , , , 입니다..value2targettarget.target.text, target.value target target.value2 등?
.Text는 셀에 대해 화면에 표시되는 내용을 나타내는 문자열을 제공합니다.「」를 사용합니다..Text보통 나쁜 생각이지 왜냐하면 당신은 그 일을 할 수 있기 때문이다####
.Value2값빈 값, 부울 값)을 .
.Value 을 주다.Value2셀이 통화 또는 날짜로 포맷된 경우 이외에는 VBA 통화(소수 자릿수 자릿수 자릿수) 또는 VBA 날짜를 제공합니다.
「」를 사용합니다..Value ★★★★★★★★★★★★★★★★★」.Text 수 없는 가 있기 때문에, 않은 생각입니다.또, 이러한 은 셀로부터 수 없고, 셀로부터 얻을 수 있는 값보다 때문입니다..Value2
상세한 것에 대하여는, 「텍스트」와 「가치」를 참조해 주세요.
Bathsheba로부터의 회답과 MSDN 정보:
다음 표를 분석하면 이러한 세 가지 속성 간의 차이를 더 잘 이해할 수 있습니다.

target.ValueVariant
target.Value2Variant, 타이핑은 「타자」로 한다.DateDouble
target.Text String이 되는 「」가 「」인 경우, 합니다.Variant이지 않다String
가장 안전한 것은 다음과 같은 것이다.
Dim v As Variant
v = target.Value 'but if you don't want to handle date types use Value2
이 하겠습니다.VBA.VarType(v)노골적인 강요를 시도하기 전에 말이야
C#의 표기법에 대해서.예를 들어 2014-10-22와 같이 날짜가 포함된 셀을 읽고 있다고 가정합니다.
사용 시:
.Text워크북 화면과 같이 날짜의 형식화된 표현이 나타납니다.
2014-10-22이 속성의 유형은 항상string하지만 항상 만족스러운 결과를 얻을 수는 없습니다.
.Value 컴파일러는 DateTimeobject: {2014-10-22 00:00:00} 날짜를 읽을 때만 유용합니다.
.Value2는 셀의 실제 기본 값을 제공합니다.날짜의 경우, 41934년 연속 날짜입니다.이 속성은 셀의 내용에 따라 다른 유형을 가질 수 있습니다.단, 날짜 연속의 경우 유형은 다음과 같습니다.double.
할 수 있습니다.dynamic,var ★★★★★★★★★★★★★★★★★」object하지만 그 가치에는 항상 당신이 행동해야 하는 어떤 종류의 선천적인 유형이 있다는 것을 주의하세요.
dynamic x = ws.get_Range("A1").Value2;
object y = ws.get_Range("A1").Value2;
var z = ws.get_Range("A1").Value2;
double d = ws.get_Range("A1").Value2; // Value of a serial is always a double
.text는 포맷된 셀의 표시된 값입니다.값은 날짜 또는 통화 표시기로 증강될 수 있는 셀의 값입니다.값 2는 관련 없는 정보가 제거된 원시 기본 값입니다.
range("A1") = Date
range("A1").numberformat = "yyyy-mm-dd"
debug.print range("A1").text
debug.print range("A1").value
debug.print range("A1").value2
'results from Immediate window
2018-06-14
6/14/2018
43265
range("A1") = "abc"
range("A1").numberformat = "_(_(_(@"
debug.print range("A1").text
debug.print range("A1").value
debug.print range("A1").value2
'results from Immediate window
abc
abc
abc
range("A1") = 12
range("A1").numberformat = "0 \m\m"
debug.print range("A1").text
debug.print range("A1").value
debug.print range("A1").value2
'results from Immediate window
12 mm
12
12
.를 .는 .보다. 또는 값값 value.스트트.는 ', 하다, 하다' 같은 것을 .#N/A할 수 및. . . . . . 。값 2는 반환된 값을 문자열과 비교하여 초크됩니다.데이터에 커스텀 셀 포맷이 적용되어 있는 경우는, 을 참조해 주세요.보고서를 작성할 때는 텍스트가 더 나을 수 있습니다.
Value 대항해서 행해지는Value2. 정도 해 본 , 에서 큰 할 수 때문에 12번 테스트를 사용하는 것이 Value아래 코드를 사용하여 다양한 범위의 테스트를 수행하였습니다.
퍼포먼스에 반하는 것이 있으면 투고해 주세요.
Sub Trial_RUN()
For t = 0 To 5
TestValueMethod (True)
TestValueMethod (False)
Next t
End Sub
Sub TestValueMethod(useValue2 As Boolean)
Dim beginTime As Date, aCell As Range, rngAddress As String, ResultsColumn As Long
ResultsColumn = 5
'have some values in your RngAddress. in my case i put =Rand() in the cells, and then set to values
rngAddress = "A2:A399999" 'I changed this around on my sets.
With ThisWorkbook.Sheets(1)
.Range(rngAddress).Offset(0, 1).ClearContents
beginTime = Now
For Each aCell In .Range(rngAddress).Cells
If useValue2 Then
aCell.Offset(0, 1).Value2 = aCell.Value2 + aCell.Offset(-1, 1).Value2
Else
aCell.Offset(0, 1).Value = aCell.Value + aCell.Offset(-1, 1).Value
End If
Next aCell
Dim Answer As String
If useValue2 Then Answer = " using Value2"
.Cells(Rows.Count, ResultsColumn).End(xlUp).Offset(1, 0) = DateDiff("S", beginTime, Now) & _
" seconds. For " & .Range(rngAddress).Cells.Count & " cells, at " & Now & Answer
End With
End Sub
Value2거의 항상 Excel 셀 또는 범위에서 읽거나 쓰기에 최적의 선택입니다.VBA에서.
Range.Value2 '<------Best way
다음 각 항목을 사용하여 범위에서 읽을 수 있습니다.
v = [a1]
v = [a1].Value
v = [a1].Value2
v = [a1].Text
v = [a1].Formula
v = [a1].FormulaR1C1
다음 각 항목을 사용하여 범위에 쓸 수 있습니다.
[a1] = v
[a1].Value = v
[a1].Value2 = v
[a1].Formula = v
[a1].FormulaR1C1 = v
넓은 범위에서 많은 값을 읽거나 많은 값을 쓰려면 셀 단위로가 아니라 전체 작업을 한 번에 수행하는 것이 훨씬 더 빠를 수 있습니다.
arr = [a1:z999].Value2
ifarrVariant 유형의 변수입니다.위 행은 실제로 폭 26열, 높이 999열의 OLE SAFEARRAY 구조를 생성하여 Variant를 포인트합니다.arrSAFEARRAY의 약칭입니다.
[a1].Resize(UBound(arr), UBound(arr, 2).Value2 = arr
위 행은 배열의 크기에 관계없이(워크시트에 적합할 경우) 전체 배열이 워크시트에 한 번에 기록됩니다.
입니다.Value되어 있지 않은 , 는 「」를 참조해 주세요.Value속성은 기본적으로 자동으로 참조됩니다.
★★★★★★★★★★★★★★.Value2는 범위 값에 액세스하는 가장 빠른 속성이며 읽을 때 실제 기본 셀 값을 반환합니다.숫자 형식, 날짜, 시간 및 통화를 무시하고 항상 VBA Double 데이터 유형으로 숫자를 반환합니다.★★Value2 하려고 , 그 .이치노Value.
Value한편 속성은 셀 값이 날짜 또는 시간의 숫자 형식인지 여부를 확인하고 이러한 경우 VBA 날짜 데이터 유형의 값을 반환합니다.가 Date 하는 경우는, VBA Date, VBA Date, VBA Date, VBA Date, VBA Date, VBA Deta 를 사용해 이 적절할 .Value 또는 형식으로 됩니다.또한 VBA Date 데이터 유형을 셀에 쓰면 해당 날짜 또는 시간 형식의 셀이 자동으로 포맷됩니다.또한 VBA 통화 데이터 유형을 셀에 쓰면 해당 셀에 통화 번호 형식이 자동으로 적용됩니다.
similarly유 similarly,, similarly 、Value는 셀 통화 형식을 확인한 후 VBA 통화 데이터 유형의 값을 반환합니다.VBA 통화 데이터 유형은 소수점 이하 4자리만 인식하므로(VBA 통화 데이터 유형은 실제로는 10000으로 축소된 64비트 정수이므로), 값이 최대 4자리로 반올림되기 때문에 정확도가 저하될 수 있습니다.하게도 그 가 소수점 두 까지 잘립니다.ValueVBA를 사용하다
전용 " " "TextVBA String 속속 。에 의해 된 값Range.Text[Number Formats],[Dates],[Times],[Currency]에러[Currency]를 선택합니다.암묵적 또는 명시적 강제가 필요하기 때문에 이는 수치값을 VBA로 가져오는 효율적인 방법이 아닙니다. Text열이 너무 얇으면 ##########을 반환하고 일부 행 높이를 조정하면 더 느려집니다. Text에 비해 항상 매우 느립니다.Value ★★★★★★★★★★★★★★★★★」Value2★★★★★★★★★★★★★★★★★★★★★★★★★★★★~Text는 셀를 유지합니다.Text는 특히 사용자 양식 컨트롤을 올바른 형식의 텍스트 값으로 채울 때 유용합니다.
로 두 가지 다Formula ★★★★★★★★★★★★★★★★★」FormulaR1C1「VBA String」(VBA 스트링).되어 있는 는, 「」를 해 주세요.Formula과 A1의 표현을 합니다.FormulaR1C1R1C1은 R1C1에 있습니다. 값이 둘 다 하드 값이다.Formula ★★★★★★★★★★★★★★★★★」FormulaR1C1 포맷을 을 반환한다.Value2값을 문자열로 다음 단계를 수행하여 해당 값을 문자열로 변환합니다.암묵적 또는 명시적 강제가 필요하기 때문에 VBA에 수치값을 입력하는 효율적인 방법은 아닙니다. ★★★★★★★★★★★★★★.Formula ★★★★★★★★★★★★★★★★★」FormulaR1C1 셀 수식을 읽는 데 사용해야 합니다.그리고 그것들은 세포에 공식을 쓸 때 사용되어야 한다.
셀 A1에 100.25의 수치와 $#,##0.00_;($#,#0.00)의 통화번호 형식이 포함되어 있는 경우 다음 사항을 고려하십시오.
MsgBox [a1].Value 'Displays: 100.25
MsgBox TypeName([a1].Value) 'Displays: Currency
MsgBox [a1].Value2 'Displays: 100.25
MsgBox TypeName([a1].Value2) 'Displays: Double
MsgBox [a1].Text 'Displays: $ 100.25
MsgBox TypeName([a1].Text) 'Displays: String
MsgBox [a1].Formula 'Displays: 100.25
MsgBox TypeName([a1].Formula) 'Displays: String
MsgBox [a1].FormulaR1C1 'Displays: 100.25
MsgBox TypeName([a1].FormulaR1C1) 'Displays: String
언급URL : https://stackoverflow.com/questions/17359835/what-is-the-difference-between-text-value-and-value2
'programing' 카테고리의 다른 글
| 모듈 또는 시트에 Excel-VBA 코드를 입력하시겠습니까? (0) | 2023.04.11 |
|---|---|
| 언바인드 세그의 용도와 사용법은 무엇입니까? (0) | 2023.04.11 |
| SQL Server의 조건부 WHERE 절 (0) | 2023.04.11 |
| Bash에서 인덱스를 지정하지 않고 어레이에 새 요소 추가 (0) | 2023.04.11 |
| index match는 공백 셀에 대해 0을 반환합니다. "-"로 해야 합니다. (0) | 2023.04.11 |
