Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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_Select_Copy_Paste - Fatal编程技术网

Excel 为什么范围方法选择第一次有效而第二次无效

Excel 为什么范围方法选择第一次有效而第二次无效,excel,vba,select,copy,paste,Excel,Vba,Select,Copy,Paste,sDate中的值是字符串05_14_21,在sub中较早使用时工作正常。Range的第一个实例。Select operation工作正常,至少我认为它工作正常。没有生成错误。第二个是“Range类的选择方法失败”。第二次操作时,工作表“05_14_21”可见。我不知所措。如果您有任何见解,我们将不胜感激。您不能使用。请在未激活的工作表范围内选择。它将给您运行时错误1004。解决方法是首先选择该图纸,然后选择范围。但老实说,使用.Select是不必要的,并且会在宏运行时使屏幕抖动。选择也会降低宏的

sDate中的值是字符串05_14_21,在sub中较早使用时工作正常。Range的第一个实例。Select operation工作正常,至少我认为它工作正常。没有生成错误。第二个是“Range类的选择方法失败”。第二次操作时,工作表“05_14_21”可见。我不知所措。如果您有任何见解,我们将不胜感激。您不能使用
。请在未激活的工作表范围内选择
。它将给您运行时错误1004。解决方法是首先选择该图纸,然后选择范围。但老实说,使用
.Select
是不必要的,并且会在宏运行时使屏幕抖动<代码>。选择
也会降低宏的速度,当您开始在代码中使用循环时,这会变得非常明显

相反,我建议您直接参考您的范围,而不是使用
。选择
,如下所示:

Sub-History1()
将sDate设置为字符串
Application.ScreenUpdating=False
sDate=表格(“汇总”).范围(“P1”).值
如果不是工作表管理员(sDate),则
Sheets.Add.Name=sDate
如果结束
工作表(sDate)。可见=真
表(sDate)。单元格。未合并
表格(“摘要”)。范围(“A1:Z100”)。复制目的地:=表格(sDate)。范围(“A1:Z100”)
工作表(sDate)。可见=错误
Application.ScreenUpdating=True
'MsgBox(“完成”)
端接头

您不能使用
。请在未激活的工作表范围内选择
。它将给您运行时错误1004。解决方法是首先选择该图纸,然后选择范围。但老实说,使用
.Select
是不必要的,并且会在宏运行时使屏幕抖动<代码>。选择
也会降低宏的速度,当您开始在代码中使用循环时,这会变得非常明显

相反,我建议您直接参考您的范围,而不是使用
。选择
,如下所示:

Sub-History1()
将sDate设置为字符串
Application.ScreenUpdating=False
sDate=表格(“汇总”).范围(“P1”).值
如果不是工作表管理员(sDate),则
Sheets.Add.Name=sDate
如果结束
工作表(sDate)。可见=真
表(sDate)。单元格。未合并
表格(“摘要”)。范围(“A1:Z100”)。复制目的地:=表格(sDate)。范围(“A1:Z100”)
工作表(sDate)。可见=错误
Application.ScreenUpdating=True
'MsgBox(“完成”)
端接头

我不确定您为什么需要选择单元格(3,1),但要做到这一点,您需要激活正确的工作表。正如另一个答案所指出的,使用select是不可取的。这也使得复制和粘贴的方式更加简洁

Sub History1()
'
' History Macro
'

'
Dim sDate As String
    Application.ScreenUpdating = False

    sDate = Sheets("Summary").Range("P1").Value
    If Not WorksheetExists(sDate) Then
        Sheets.Add.Name = sDate
    End If
    Sheets(sDate).Visible = True
    Sheets(sDate).Cells.UnMerge
    Sheets("Summary").Range("A1:Z100").Select
    Selection.Copy
    Sheets(sDate).Range("A1:Z100").Select
    Selection.Paste
    
    Sheets(sDate).Visible = False
    Sheets("Summary").Cells(3, 1).Select
    
    Application.ScreenUpdating = True
'    MsgBox ("Done")
End Sub

我不确定您为什么需要选择单元格(3,1),但要做到这一点,您需要激活正确的工作表。正如另一个答案所指出的,使用select是不可取的。这也使得复制和粘贴的方式更加简洁

Sub History1()
'
' History Macro
'

'
Dim sDate As String
    Application.ScreenUpdating = False

    sDate = Sheets("Summary").Range("P1").Value
    If Not WorksheetExists(sDate) Then
        Sheets.Add.Name = sDate
    End If
    Sheets(sDate).Visible = True
    Sheets(sDate).Cells.UnMerge
    Sheets("Summary").Range("A1:Z100").Select
    Selection.Copy
    Sheets(sDate).Range("A1:Z100").Select
    Selection.Paste
    
    Sheets(sDate).Visible = False
    Sheets("Summary").Cells(3, 1).Select
    
    Application.ScreenUpdating = True
'    MsgBox ("Done")
End Sub

为什么要使用
。选择
?另外,为什么需要
.Visible
?对于
sDate
的值,“局部变量”窗口显示什么?它声明为什么类型的变量?
Sheets(sDate)。范围(“A1:Z100”)。值=Sheets(“Summary”)。范围(“A1:Z100”)。值
无选择、复制或粘贴。
Sheets(“Summary”)。单元格(3,1)的用途是什么.Select
service?为什么要使用
。Select
?还有,为什么需要
。Visible
?Locals窗口为
sDate
的值显示了什么?它声明为什么类型的变量?
Sheets(sDate)。范围(“A1:Z100”)。值=Sheets(“Summary”)。范围(“A1:Z100”)。值
无选择,复制或粘贴。
Sheets(“Summary”)。单元格(3,1)的用途是什么?选择
服务?我从来没有使用过
。复制
。粘贴
,所以我只是做了一个假设,哈哈。我已经将其更正为
。复制目的地:=
。完美!!!谢谢你的见解。我以前从未使用过
.Copy
.Paste
,所以我只是做了一个假设,哈哈。我已经将其更正为
。复制目的地:=
。完美!!!谢谢你的见解。