[英]Run Time Error 9 with Select Case
有時下面的腳本有效,但通常會在標題中產生錯誤消息。 我已經在對象和變量上設置了監視,當錯誤發生時它們都似乎已定義和/或具有適當的值,因此令人困惑。 有什么建議么?
Public Sub PopulateDepositDetails()
Set BT = Workbooks("US98 1650 Backup Template.xlsx")
Set DD = BT.Sheets("Deposit Details")
Set RDI = BT.Sheets("Raw Database Info")
LastRowRDI = RDI.Cells(Rows.Count, 1).End(xlUp).Row
'Define Trading Partner(Company Number) Range
Dim x, ColX As Range, nrDD, rownum As Integer
Set ColX = RDI.Range(Cells(4, 24).Address, Cells(LastRowRDI, 24).Address)
nrDD = 2 ' sets Deposit Details sheet next row
Dim COName As String
COName = InputBox(Prompt:="Enter Company to Process", _
Title:="ENTER COMPANY")
If COName = vbNullString Then
Exit Sub
Else
Select Case COName
Case "US96"
For Each x In ColX
If x = "US96" And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=Sheets("Deposit Details").Range("A" & nrDD)
End If
Next
Case "US97"
For Each x In ColX
If x = "US97" And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=Sheets("Deposit Details").Range("A" & nrDD)
End If
Next
Case "US98"
For Each x In ColX
If x = "US98" And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=Sheets("Deposit Details").Range("A" & nrDD)
End If
Next
Case "US99"
For Each x In ColX
If x = "US99" And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=Sheets("Deposit Details").Range("A" & nrDD)
End If
Next
Case "USZ0"
For Each x In ColX
If x = "USZ0" And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=Sheets("Deposit Details").Range("A" & nrDD)
End If
Next
End Select
End If
End Sub
Sheets("Deposit Details")
在Workbooks("US98 1650 Backup Template.xlsx")
使用已設置的DD變量來引用Workbooks("US98 1650 Backup Template.xlsx").Sheets("Deposit Details")
Public Sub PopulateDepositDetails()
Set BT = Workbooks("US98 1650 Backup Template.xlsx")
Set DD = BT.Sheets("Deposit Details")
Set RDI = BT.Sheets("Raw Database Info")
LastRowRDI = RDI.Cells(Rows.Count, 1).End(xlUp).Row
'Define Trading Partner(Company Number) Range
Dim x, ColX As Range, nrDD, rownum As Integer
Set ColX = RDI.Range(RDI.Cells(4, 24), RDI.Cells(LastRowRDI, 24))
nrDD = 2 ' sets Deposit Details sheet next row
Dim COName As String
COName = Application.InputBox(Prompt:="Enter Company to Process", _
Title:="ENTER COMPANY", Type:=2)
If COName = "US96" Or COName = "US97" Or COName = "US98" Or COName = "US99" Or COName = "USZ0" Then
For Each x In ColX
If x = COName And x.Offset(0, 4) = "YES" Then
nrDD = nrDD + 1
x.EntireRow.Copy Destination:=DD.Range("A" & nrDD)
End If
Next
End If
End Sub
Type:= 2的Application.InputBox
將始終返回一個字符串。 如果用戶取消輸入框,它將返回一個空字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.