Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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参数非可选错误userfrom listbox_Excel_Vba_Runtime Error - Fatal编程技术网

Excel VBA参数非可选错误userfrom listbox

Excel VBA参数非可选错误userfrom listbox,excel,vba,runtime-error,Excel,Vba,Runtime Error,我为一个UserForm编写了以下代码,但是我一直得到一个参数not optional错误 Option Explicit Private Sub CommandButton3_Click() Select Case LCase(Me.ListBox2.Text) Case "Analysis": Call macro1 Case "" MsgBox "nothing selected" Case Else MsgBox Me.ListB

我为一个UserForm编写了以下代码,但是我一直得到一个
参数not optional
错误

Option Explicit
Private Sub CommandButton3_Click()
   Select Case LCase(Me.ListBox2.Text)
   Case "Analysis": Call macro1
   Case "" 
        MsgBox "nothing selected"
   Case Else
        MsgBox Me.ListBox2.Text
   End Select
End Sub
宏1代码:

Sub macro1()
'
' Macro1 Macro
Sheets.Add
ActiveSheet.Name = "Analysis"
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'
Range("A13").Select
ActiveCell.FormulaR1C1 = "Year"
Range("B13").Select
ActiveCell.FormulaR1C1 = "0"
Range("C13").Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(RC[-1]+1>R9C2,"""",RC[-1]+1),"""")"
Range("C13").Select
Selection.AutoFill Destination:=Range("C13:HS13"), Type:=xlFillDefault 
Range("C13:HQ13").Select
End Sub

首先,引用列表框的方法是一个问题。请参见下面的代码,我必须在范围之前添加工作表名称,然后这对我有效

Option Explicit

Private Sub CommandButton3_Click()
Dim i as Integer
Dim sValue as String
   For i = 0 To Me.ListBox2.ListCount - 1
       If Me.ListBox2.Selected(i) Then
           sValue = ListBox2.List(i)
       End If
   Next i

   Select Case LCase(sValue)
      Case "Analysis": Call macro1
      Case "" 
          MsgBox "nothing selected"
      Case Else
          MsgBox sValue.Text
   End Select
End Sub

Sub macro1()
'
' Macro1 Macro
Sheets.Add
ActiveSheet.Name = "Analysis"
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'
Sheets("Analysis").Range("A13").Select
ActiveCell.FormulaR1C1 = "Year"
Sheets("Analysis").Range("B13").Select
ActiveCell.FormulaR1C1 = "0"
Sheets("Analysis").Range("C13").Select
ActiveCell.FormulaR1C1 = "=IFERROR(IF(RC[-1]+1>R9C2,"""",RC[-1]+1),"""")"
Sheets("Analysis").Range("C13").Select
Selection.AutoFill Destination:=Sheets("Analysis").Range("C13:HS13"), Type:=xlFillDefault
Sheets("Analysis").Range("C13:HQ13").Select
End Sub

哪一行有错误?我猜Macro1需要提供一个参数。另外,您的选择大小写基于小写listbox2.Text。您的案例语句之一是“分析”-这将永远不会运行,因为它不是小写。第二行高亮显示Macro1的代码是什么?Sub Macro1()“”Macro1宏工作表。添加ActiveSheet.Name=“Analysis”Application.DisplayAlerts=False Application.ScreenUpdate=False”范围(“A13”)。选择ActiveCell.FormulaR1C1=“年”范围(“B13”)。选择ActiveCell.FormulaR1C1=“0”范围(“C13”)。选择ActiveCell.FormulaR1C1=“=IFERROR(如果(RC[-1]+1>R9C2,”,RC[-1]+1),“)”范围(“C13”)。选择Selection.AutoFill目标:=Range(“C13:HS13”),类型:=XLDefault范围(“C13:HQ13”).选择“结束”子项,请比“第二行突出显示”更具体。。。为什么不发布实际的代码行呢?当我得到错误时,下面的代码行会突出显示:Private Sub CommandButton3_Click()您是否尝试过一次一行地逐行遍历代码?如果没有,那么你应该。由于您没有错误陷阱,您可能会被误导到错误的正确来源。请参阅更新的答案-您的问题与列表框有关。