![](/img/trans.png)
[英]VBA Run-time error 1004: Method Range of object _Global failed when trying to create tables in Excel 2013
[英]Run-time error 1004 - Range of object failed - VBA 2013
我收到运行时错误1004,对象'_Worksheet'的方法'Range'失败。
这段代码以前曾在该项目的草稿上起作用,但是当导入到新的项目文件中时,我得到了...。命名的范围或工作表名称均未从以前的版本更改。 请帮忙!
Private Sub UserForm_Initialize()
'Set Variables to populate combobox
Dim rngProjects As Range
Dim ws1 As Worksheet
Set ws1 = Worksheets("Validation")
For Each rngProjects In ws1.Range("Projects")
Me.cboProject.AddItem rngProjects.Value
Me.cboAccount.AddItem rngProjects.Value
Next rngProjects
'Add static data for combobox
Me.cboTransactionType.AddItem "Income"
Me.cboTransactionType.AddItem "Expense"
在我看来,工作表名称已更改(有时无法识别前导或尾随空格)或已命名范围的名称已更改。 此外,也可能是命名范围移动到了另一个工作表(验证工作表除外)。
如果您检查了以上所有内容,并且进一步使用了注释中建议的显式引用,则应该可以找到问题所在。 这是带有一些其他检查的代码。 尝试一下,让我们知道是否可行或使您意识到问题所在。
Option Explicit
Private Sub UserForm_Initialize()
'Set Variables to populate combobox
Dim rngProjects As Range
Dim ws1 As Worksheet
Dim bolFound As Boolean
Dim nm As Name
For Each ws1 In ThisWorkbook.Worksheets
If ws1.Name = "Validation" Then bolFound = True
Next ws1
If bolFound = False Then
MsgBox "Required sheet not found."
Exit Sub
End If
Set ws1 = Worksheets("Validation")
For Each rngProjects In ws1.Range(ws1.Cells(8, 1), ws1.Cells(ws1.Rows.Count, 1).End(xlUp))
frmAddTransaction.cboProject.AddItem rngProjects.Value
frmAddTransaction.cboAccount.AddItem rngProjects.Value
Next rngProjects
'Add static data for combobox
frmAddTransaction.cboTransactionType.AddItem "Income"
frmAddTransaction.cboTransactionType.AddItem "Expense"
End Sub
如下所述,间接命名范围已被删除。 而是,该工作表现在直接在代码中引用。 这样,对命名范围的任何更改都不会对代码产生影响。 相反,8行的偏移是写在VBA它是稍微更安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.