Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 工作表类的移动方法失败_Excel_Vba - Fatal编程技术网

Excel 工作表类的移动方法失败

Excel 工作表类的移动方法失败,excel,vba,Excel,Vba,我试图使用下面在线找到的编码在工作簿中排列选项卡,但是,在排列工作簿中的一些工作表后,出现以下错误“运行时错误'1004';工作表类的移动方法失败。我已经对宏进行了几次检查,它似乎工作得很好,直到它遇到一个尚未重命名的工作表。这时错误就出现了。这一行出现在工作表(j)上。移动到:=工作表(j+1) 编码如下: Sub Sort_Active_Book() Dim i As Integer Dim j As Integer Dim iAnswer As VbMsgBoxResult ' '

我试图使用下面在线找到的编码在工作簿中排列选项卡,但是,在排列工作簿中的一些工作表后,出现以下错误“运行时错误'1004';工作表类的移动方法失败。我已经对宏进行了几次检查,它似乎工作得很好,直到它遇到一个尚未重命名的工作表。这时错误就出现了。这一行出现在
工作表(j)上。移动到:=工作表(j+1)

编码如下:

Sub Sort_Active_Book()
Dim i As Integer
Dim j As Integer
Dim iAnswer As VbMsgBoxResult
'
'
   iAnswer = MsgBox("Sort Sheets in Ascending Order?" & Chr(10) _
     & "Clicking No will sort in Descending Order", _
     vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sort Worksheets")
   For i = 1 To Sheets.Count
      For j = 1 To Sheets.Count - 1
'
' If the answer is Yes, then sort in ascending order.
'
         If iAnswer = vbYes Then
            If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
               Sheets(j).Move After:=Sheets(j + 1)
            End If
'
' If the answer is No, then sort in descending order.
'
         ElseIf iAnswer = vbNo Then
            If UCase$(Sheets(j).Name) < UCase$(Sheets(j + 1).Name) Then
               Sheets(j).Move After:=Sheets(j + 1)
            End If
         End If
      Next j
   Next i
End Sub
Sub-Sort\u Active\u Book()
作为整数的Dim i
作为整数的Dim j
Dim iAnswer作为VbMsgBoxResult
'
'
iAnswer=MsgBox(“按升序排序工作表?”&Chr(10)_
&“单击“否”将按降序排序”_
vbYesNoCancel+vbQuestion+vbDefaultButton1,“对工作表排序”)
对于i=1到1张。计数
对于j=1的板材,计数为-1
'
'如果答案是肯定的,则按升序排序。
'
如果iAnswer=vbYes,则
如果UCase$(Sheets(j).Name)>UCase$(Sheets(j+1).Name),那么
板材(j)。在以下位置移动:=板材(j+1)
如果结束
'
'如果答案是否,则按降序排序。
'
ElseIf iAnswer=vbNo然后
如果UCase$(Sheets(j).Name)
我会这样做,但基于您现有的方法:

Sub Sort_Active_Book()
Dim i As Integer
Dim j As Integer
Dim iAnswer As VbMsgBoxResult

Dim sht1 As Worksheet
Dim sht2 As Worksheet

With ActiveWorkbook

'
'
   iAnswer = MsgBox("Sort Sheets in Ascending Order?" & Chr(10) _
     & "Clicking No will sort in Descending Order", _
     vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sort Worksheets")

   For i = 1 To .Sheets.Count
      For j = 1 To .Sheets.Count - 1

        Set sht1 = .Sheets(j)
        Set sht2 = .Sheets(j + 1)

        '
        ' If the answer is Yes, then sort in ascending order.
        '
         If iAnswer = vbYes Then
            If UCase$(sht1.Name) > UCase$(sht2.Name) Then
               sht1.Move After:=sht2
            End If
        '
        ' If the answer is No, then sort in descending order.
        '
         ElseIf iAnswer = vbNo Then
            If UCase$(sht1.Name) < UCase$(sht2.Name) Then
               sht1.Move After:=sht2
            End If
         End If
      Next j
   Next i

End With

End Sub
Sub-Sort\u Active\u Book()
作为整数的Dim i
作为整数的Dim j
Dim iAnswer作为VbMsgBoxResult
Dim sht1作为工作表
将sht2变暗为工作表
使用ActiveWorkbook
'
'
iAnswer=MsgBox(“按升序排序工作表?”&Chr(10)_
&“单击“否”将按降序排序”_
vbYesNoCancel+vbQuestion+vbDefaultButton1,“对工作表排序”)
对于i=1到.Sheets.Count
对于j=1到.Sheets.Count-1
设置sht1=.张(j)
设置sht2=.张(j+1)
'
'如果答案是肯定的,则按升序排序。
'
如果iAnswer=vbYes,则
如果UCase$(sht1.Name)>UCase$(sht2.Name),那么
sht1.在以下位置移动:=sht2
如果结束
'
'如果答案是否,则按降序排序。
'
ElseIf iAnswer=vbNo然后
如果UCase$(sht1.Name)

注释:有其他工作表使用
xlSheetVeryHidden
隐藏,因此问题中出现了初始运行时错误。

您将此代码放在哪里?您需要添加新模块并放入代码。它使用完全限定的引用进行计量:
thishworkbook.Sheets(j)。移到:=Sheets(j+1)
。如果同时打开多个工作簿,则可能会发生这种错误。简言之,将
此工作簿
放在代码中所有
工作表
对象的前面。感谢CLR的出色工作。你的编码帮助我找到了最初的问题。。。还有其他使用xlSheetVeryHidden隐藏的工作表,因此出现了最初的运行时错误。@BaberBeg我已将您的评论编辑为后代的答案。您找到的实际根本原因对调试非常有帮助。