Excel 为什么范围方法选择第一次有效而第二次无效
sDate中的值是字符串05_14_21,在sub中较早使用时工作正常。Range的第一个实例。Select operation工作正常,至少我认为它工作正常。没有生成错误。第二个是“Range类的选择方法失败”。第二次操作时,工作表“05_14_21”可见。我不知所措。如果您有任何见解,我们将不胜感激。您不能使用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是不必要的,并且会在宏运行时使屏幕抖动。选择也会降低宏的
。请在未激活的工作表范围内选择。它将给您运行时错误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
,所以我只是做了一个假设,哈哈。我已经将其更正为。复制目的地:=
。完美!!!谢谢你的见解。