[英]Run-time error '1004': Method 'Range' of object '_worksheet' failed
[英]VBA Run-time error '1004': Method 'Range' of object '_Worksheet'
我知道這個問題與 Stack 上發布的許多其他問題相似,但他們的解決方案都不適合我。 我是 VBA 的新手,所以請盡量讓您的解決方案易於理解。 下面的代碼基本上有條件地鎖定和解鎖單元格(尚未完成;仍在嘗試關閉框架):
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Protect UserInterFaceOnly:=True
' Volatility
If Not IsEmpty(Range("B11").Value) Then
Range("B12").Value = ""
Range("B13").Value = ""
Range("B22").Value = Range("B11").Value
Range("B12:B13").Locked = True
Else
Range("B12:B13").Locked = False
End If
If IsEmpty(Range("B12").Value) And IsEmpty(Range("B13").Value) Then
Range("B11").Locked = False
Else
Select Case Range("B12").Value
Case Is = "Daily"
Range("B22").Value = Range("B13").Value * Sqr(252)
Case Is = "Weekly"
Range("B22").Value = Range("B13").Value * Sqr(52)
Case Is = "Monthly"
Range("B22").Value = Range("B13").Value * Sqr(12)
Case Is = "Annual"
Range("B22").Value = Range("B13").Value
End Select
Range("B11").Locked = True
End If
' Time
If Not IsEmpty(Range("B14").Value) Then
Range("B15").Value = ""
Range("B15").Locked = True
Range("B23").Value = Range("B14").Value / Range("B7").Value
Else
Range("B15").Locked = False
End If
If Not IsEmpty(Range("B15").Value) Then
Range("B14").Locked = True
Range("B23").Value = Range("B15").Value
Else
Range("B14").Locked = False
End If
' Dividends
If Not IsEmpty(Range("B16").Value) Then
Range("B17").Value = ""
Range("B17").Locked = True
Else
Range("B17").Locked = False
End If
If Not IsEmpty(Range("B17").Value) Then
Range("B16").Locked = True
Else
Range("B16").Locked = False
End If
Select Case Range("B6").Value
Case Is = "Cox Rox Rubinstein (1979)"
' If requirements satisfied, populate outputs
' Else make output values blank
Range("B24").Value = ""
Case Is = "Forward Tree"
Range("B24").Value = ""
Case Is = "Lognormal Tree"
Range("B24").Value = ""
Case Is = "Custom"
Range("B24").Value = ""
End Select
End Sub
問題是,每當我更改工作表 Excel 上的任何單元格值時都會提示“獲取運行時 1004:object '_Worksheet' 的方法'范圍'失敗”,而沒有指定哪一行代碼,然后強制退出程序。 請參閱此處的表格。 任何幫助是極大的贊賞!
我發現我在使用
Private Sub Worksheet_Change(ByVal Target As Range)
在不使用 intersect() 的情況下,我本質上是在處理一個不存在的范圍。 簡單的修復如下:
If Not Intersect(Target, Range("B2")) Is Nothing Then
之后,打開和關閉事件變得相關,以防止在更改選定單元格的值時出現無限循環。 感謝您的提示!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.