VBA 메서드 'range of object' _ 코드를 실행할 때 워크시트가 갑자기 나타나지 않았습니까?
이전에는 이 코드가 잘 실행되다가 갑자기 "method 'range of object' _ Worksheet failed"에서 오류가 발생하기 시작했습니다.저는 VBA에 대한 전문가는 아니지만, VBA에 대한 전문가는 아닙니다.제가 놓친 게 있나요?
Public Sub Run_Count_Click()
'// Set Ranges
Dim Cr_1, CR1_range, _
Cr_2, CR2_range, _
Cr_3, CR3_range, _
Cr_4, CR4_range, _
Cr_5, CR5_range _
As Range
'// Set Integers
Dim CR1, V1, CR1_Result, _
CR2, V2, CR2_Result, _
CR3, V3, CR3_Result, _
CR4, V4, CR4_Result, _
CR5, V5, CR5_Result, _
total_result, _
total_result2, _
total_result3, _
total_result4, _
total_result5 _
As Integer
'Set Strings
Dim V_1, V_2, V_3, V_4, V_5 As String
Dim ws As Worksheet
Set ws = Worksheets("database")
'// Get Criteria From Form And Search Database Headers
Set Cr_1 = ws.Cells.Find(What:=Me.Count_Criteria_1.Value, After:=Cells(1, 1), MatchCase:=False)
If Not Cr_1 Is Nothing Then
CR1 = Cr_1.Column '//Set CR1 as the Column in which the Criteria Header was found
Else
MsgBox "Criteria 1 Has Not Been Found In The Database. Report Has Failed To Generate"
Exit Sub
End If
'// Get Variable Value From Form And Set Shortcode
V_1 = Me.Criteria_1_Variable.Value
Set CR1_range = ws.Range(Cells(5, CR1), Cells(Rows.count, CR1))
CR1_Result = Application.CountIf(CR1_range, V_1)
If Me.Count_Criteria_2 = "Any" Then
Me.Count_Result.visible = True
Me.Count_Result.Value = "Based On Your Search Criteria Of:" & vbNewLine & _
"How many occurences of [" & Me.Criteria_1_Variable.Value & "] in the category [" & Me.Count_Criteria_1.Value & _
"] have occured between the dates..." & vbNewLine & vbNewLine & "The Results Are: " & CR1_Result
Exit Sub
다음 행에서 코드가 실패합니다.
Set CR1_range = ws.Range(Cells(5, CR1), Cells(Rows.count, CR1))
여러분, 잘 부탁드립니다.
셀이 "데이터베이스"가 아닌 활성 시트에서 참조되고 있습니다.
Set CR1_range = ws.Range(ws.Cells(5, CR1), ws.Cells(ws.Rows.count, CR1))
_global 객체의 Excel VBA 메서드 범위가 실패했습니까?
Sub kar()
Dim i, j
For i = 8 To 15
For j = 9 To 15
If (Range("ji") = Range("jj") And Range("gi") = "خريد" And Range("gj") = "فروش" And (Abs(Range("ki") - Range("kj") <= 50))) Then
Range("ui") = -(Range("ki") - Range("kj")) * hi
Range("uj") = -(Range("ki") - Range("kj")) * hj
End If
If (Range("ji") = Range("jj") And Range("gi") = "فروش" And Range("gj") = "خريد" And (Abs(Range("ki") - Range("kj")) <= 50)) Then
Range("uj").Value = -(Range("ki") - Range("kj")) * hi
Range("ui").Value = -(Range("ki") - Range("kj")) * hj
End If
Next j
Next i
End Sub
저는 같은 오류 메시지를 보았지만 원인은 제게 달랐습니다.활성 워크시트만 참조하고 있습니다.모든 사용자가 동일한 VBA 로직을 가진 일부 사용자를 위해 기본 ReferenceStyle이 변경된 것 같습니다.이것이 응용프로그램 업데이트의 결과인지 아니면 여러 사용자가 동일한 변경을 할 수 있었는지 확실하지 않습니다.논리를 디버깅하면서 PrintArea 표현이 더 이상 범위로 변환되지 않는다는 것을 발견했습니다.
wS.Range(wS.PageSetup.PrintArea).Address
PrintArea 값이 채워졌지만 익숙하지 않은 형식으로 표시되었습니다.알고 보니 기본 A1 스타일 셀 참조가 아닌 R1C1 스타일이었습니다.사용자 설정에서 참조 스타일을 변경하는 것을 참조하는 다른 게시물을 찾았지만 사용자에게 이러한 변경을 강요하고 싶지 않았습니다.저는 이 워크북을 열 때마다 이 워크북의 참조 스타일을 설정하기로 결정했습니다.저는 워크북_Open에 접속하여 xlA1을 사용했습니다.
Application.ReferenceStyle = xlA1
언급URL : https://stackoverflow.com/questions/20008033/vba-method-range-of-object-worksheet-failed-suddenly-coming-up-when-running-c
'source' 카테고리의 다른 글
목록에서 데이터 프레임에 열 추가 (0) | 2023.06.08 |
---|---|
Web.Config 디버그/릴리스 (0) | 2023.06.08 |
기본 앱이 아직 구성되지 않았습니다. (0) | 2023.06.08 |
ASP.NET Core 1.0 Web API에서의 간단한 JWT 인증 (0) | 2023.06.08 |
NPOI를 사용하여 Excel을 데이터 테이블로 내보내기 (0) | 2023.06.08 |