Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA新增:运行时错误“;91“是的:对象变量或未设置块变量_Vba_Excel - Fatal编程技术网

Excel VBA新增:运行时错误“;91“是的:对象变量或未设置块变量

Excel VBA新增:运行时错误“;91“是的:对象变量或未设置块变量,vba,excel,Vba,Excel,我对Excel VBA不熟悉,请原谅我的无知 实际上,我正试图从一个UserForm在所选的工作表上运行一个程序。 然后,程序将从所选图纸中获取一个值,该值将导入到新创建的图纸中。Sheet18是一个图纸模板,它将被复制到新图纸中 以下是代码: Private Sub CommandButton1_Click() UserForm1.Hide Dim wsUserSel As Worksheet Dim ws As Worksheet Dim ExFund As Variant

我对Excel VBA不熟悉,请原谅我的无知

实际上,我正试图从一个UserForm在所选的工作表上运行一个程序。 然后,程序将从所选图纸中获取一个值,该值将导入到新创建的图纸中。Sheet18是一个图纸模板,它将被复制到新图纸中

以下是代码:

Private Sub CommandButton1_Click()
UserForm1.Hide
  Dim wsUserSel As Worksheet
  Dim ws As Worksheet
  Dim ExFund As Variant

    On Error Resume Next
    Set wsUserSel = ListBox1.Value
    Set ws = Sheets.Add(after:=Sheets(Sheets.Count))
    On Error GoTo 0
        With wsUserSel
            ExFund = .Cells(107, 4).Value
        End With
        Sheet18.Range("A1:K126").Copy
        ws.Name = InputBox("Please input the name of new worksheet.", ThisWorkbook.Name)
        ws.Activate
        Range("A1").Select
        ActiveSheet.Paste
        ActiveSheet.Cells(29, 2) = ExFund
        ActiveSheet.Cells.EntireColumn.AutoFit
        Application.CutCopyMode = False
End Sub
此代码返回一个错误

运行时错误“91”:未设置对象变量或带块变量

由于这部分代码:

    With wsUserSel
        ExFund = .Cells(107, 4).Value
    End With
我试着直接使用wsUserSel将它放在里面,但我似乎无法让它工作


我做错了什么?

你的
错误恢复下一步
语句掩盖了你在线上遇到的错误

Set wsUserSel = ListBox1.Value
该行将失败,因为
ListBox1.Value
将不是
工作表
对象。我假设是一个
字符串
,指定要使用的工作表


因此,将这一部分改为:

On Error Resume Next
Set wsUserSel = ListBox1.Value
Set ws = Sheets.Add(after:=Sheets(Sheets.Count))
On Error GoTo 0
将是:

Set wsUserSel = Worksheets(ListBox1.Value)
Set ws = Sheets.Add(after:=Sheets(Sheets.Count))

谢谢你。你的回答恰到好处!