Excel VBA에 개체 필요 오류가 있습니다.
Dim g1val, g2val As Integer
Set g1val = 0
Set g2val = 0
For i = 3 To 18
If g1val > Cells(33, i).Value Then
g1val = g1val
Else
g1val = Cells(33, i).Value
End If
Next i
For j = 32 To 57
If g2val > Cells(31, j).Value Then
g2val = g2val
Else
g2val = Cells(31, j).Value
End If
Next j
여기 두 번째 줄에서 개체가 필요하다고 말하는 오류가 발생합니다.저는 g1val과 g2val을 Double로 만들려고 노력했고 처음에는 그들의 값에 1을 주려고 했습니다.하지만 그것들은 잘 되지 않았습니다.도와주실 수 있나요?
정수 변수의 값을 설정하기 위해 단순히 값을 할당합니다.g1val = 0
여기서 asset 키워드는 객체에 값을 할당하는 데 사용됩니다.
Sub test()
Dim g1val, g2val As Integer
g1val = 0
g2val = 0
For i = 3 To 18
If g1val > Cells(33, i).Value Then
g1val = g1val
Else
g1val = Cells(33, i).Value
End If
Next i
For j = 32 To 57
If g2val > Cells(31, j).Value Then
g2val = g2val
Else
g2val = Cells(31, j).Value
End If
Next j
End Sub
Set 문은 객체 변수에만 사용됩니다(예:Range
,Cell
또는Worksheet
Excel)에서, 단순 등호 '='는 다음과 같은 기본 데이터 유형에 사용됩니다.Integer
당신은 여기에서 언제 세트를 사용해야 하는지에 대한 좋은 설명을 찾을 수 있습니다.
또 다른 문제는 당신의 변수가g1val
실제로는 로 선언되지 않았습니다.Integer
하지만 타입이 있습니다.Variant
이는 Dim 문이 예상대로 작동하지 않기 때문입니다(아래 예 참조).변수 뒤에 바로 해당 유형이 와야 합니다. 그렇지 않으면 유형이 다음과 같이 기본 설정됩니다.Variant
다음과 같은 방법으로만 Dim 문을 단축할 수 있습니다.
Dim intColumn As Integer, intRow As Integer 'This creates two integers
이러한 이유로 시계 창에 예상되는 "0" 대신 "비어 있음"이 표시됩니다.
다음 예를 사용하여 차이점을 이해해 보십시오.
Sub Dimming()
Dim thisBecomesVariant, thisIsAnInteger As Integer
Dim integerOne As Integer, integerTwo As Integer
MsgBox TypeName(thisBecomesVariant) 'Will display "Empty"
MsgBox TypeName(thisIsAnInteger ) 'Will display "Integer"
MsgBox TypeName(integerOne ) 'Will display "Integer"
MsgBox TypeName(integerTwo ) 'Will display "Integer"
'By assigning an Integer value to a Variant it becomes Integer, too
thisBecomesVariant = 0
MsgBox TypeName(thisBecomesVariant) 'Will display "Integer"
End Sub
코드에 대한 두 가지 추가 공지사항:
첫 번째 발언:쓰는 대신에
'If g1val is bigger than the value in the current cell
If g1val > Cells(33, i).Value Then
g1val = g1val 'Don't change g1val
Else
g1val = Cells(33, i).Value 'Otherwise set g1val to the cell's value
End If
당신은 간단히 쓸 수 있습니다.
'If g1val is smaller or equal than the value in the current cell
If g1val <= Cells(33, i).Value Then
g1val = Cells(33, i).Value 'Set g1val to the cell's value
End If
당신이 바꾸고 싶지 않기 때문에.g1val
다른 경우에는
두 번째 발언:프로그래밍할 때 프로그램의 오타를 방지하기 위해 옵션 명시적을 사용하는 것이 좋습니다.그런 다음 모든 변수를 선언해야 하며 변수를 알 수 없는 경우 컴파일러가 경고를 표시합니다.
언급URL : https://stackoverflow.com/questions/19048601/object-required-error-in-excel-vba
'programing' 카테고리의 다른 글
Swift에서 사용자 상호 작용을 비활성화하는 방법UI 보기? (0) | 2023.08.22 |
---|---|
무한 재귀 오류 없이 __getattribute__를 구현하려면 어떻게 해야 합니까? (0) | 2023.08.17 |
오류 2002(HY000):소켓 '/var/run/mysqld/mysqld/mysqld를 통해 로컬 MySQL 서버에 연결할 수 없습니다.sock' (2) 해결책이 작동하지 않음 (0) | 2023.08.17 |
병합 커밋이 없는 Git 로그 보기 (0) | 2023.08.17 |
시작하는 동안 Spring boot MariaDB 볼트 사용자 이름 자격 증명을 사용할 수 없음 (0) | 2023.08.17 |