Excel 无法选择单元格-非常奇怪
请帮忙! 我的代码的最后一行Excel 无法选择单元格-非常奇怪,excel,vba,Excel,Vba,请帮忙! 我的代码的最后一行 'Sheets("Original Data from Server").Cells(4, 2).Select 不行!继续获取错误范围类的选择方法失败' 每当我只运行这一行,它的工作完美。 但是每当我运行其余的代码时,我都会得到错误 似乎没人能帮我弄明白这件事 Sub FormatAdjacencyReport() Dim iLastRow As Integer '<-- Interger for Counting Number of Rows Dim i
'Sheets("Original Data from Server").Cells(4, 2).Select
不行!继续获取错误范围类的选择方法失败'
每当我只运行这一行,它的工作完美。
但是每当我运行其余的代码时,我都会得到错误
似乎没人能帮我弄明白这件事
Sub FormatAdjacencyReport()
Dim iLastRow As Integer '<-- Interger for Counting Number of Rows
Dim iLastColumn As Integer '<-- Interger for Counting Number of Columns
Dim OriginalOutput As Worksheet '<-- Sheet Containing Orignal Report
Dim AdjacencyData As Worksheet '<-- Sheet Crated for Final Output
Set OriginalOutput = ActiveWorkbook.Worksheets(1)
OriginalOutput.Name = "Original Data from Server"
'Determines how many different rows we have in original output
iLastRow = Range("B1").Rows.End(xlDown).Row
'Txt to Columns for Each Row
For i = 2 To iLastRow
Sheets("Original Data from Server").Cells(i, 5).TextToColumns DataType:=xlDelimited, _
ConsecutiveDelimiter:=True, Space:=True
Next i
'Create a new sheet for our output
Set AdjacencyData = Sheets.Add
AdjacencyData.Name = "Adjacency Data Output"
'Need to Paste the Entire List of Store Numbers into a New Tab
iLastColumn = Sheets("Original Data from Server").Cells(2, 1).Columns.End(xlToRight).Column
'Sheets("Original Data from Server").Cells(4, 2).Select
End Sub
在调用该工作表上的select之前,需要将焦点设置回工作表或服务器上的原始数据。因此,将行“Sheets”放在服务器的原始数据中。在最后一行之前选择。当执行抛行错误时,焦点在另一张纸上。为避免此类错误,我建议您停止使用select和/或ACTIVE,并且仅在绝对必要时使用它。 您的代码可能如下所示:
Sub FormatAdjacencyReport()
Dim iLastRow As Long '<-- for Counting Number of Rows
Dim iLastColumn As Long '<-- for Counting Number of Columns
Dim OriginalOutput As Worksheet '<-- Sheet Containing Orignal Report
Dim AdjacencyData As Worksheet '<-- Sheet Crated for Final Output
Set OriginalOutput = ActiveWorkbook.Worksheets(1)
OriginalOutput.Name = "Original Data from Server"
'Determines how many different rows we have in original output
iLastRow = OriginalOutput.Range("B1").End(xlDown).Row ' changed
iLastColumn = OriginalOutput.Range("A2").End(xlToRight).Column ' changed
'Txt to Columns for Each Row
For i = 2 To iLastRow
OriginalOutput.Cells(i, 5).TextToColumns DataType:=xlDelimited, _
ConsecutiveDelimiter:=True, Space:=True
Next i
'Create a new sheet for our output
Set AdjacencyData = Sheets.Add
AdjacencyData.Name = "Adjacency Data Output"
'Need to Paste the Entire List of Store Numbers into a New Tab
' OriginalOutput.Activate -- not needed
' OriginalOutput.Cells(4, 2).Select -- not needed
OriginalOutput.Range("B4:B17").Value = AdjacencyData.Range("A10:A23") ' direct copy!
End Sub
1-无论何时处理多张工作表或工作簿,都要使用限定的范围/单元格。请参见确定iLastRow的行。
2-一旦限额确定,将表格限额计算放在一个地方
3-避免来自服务器的明确限定符或原始数据。有利于指定的变量OrignalOutput。这样,您就可以在一个位置完全限定工作簿名和工作表名。想象一下,您稍后会更改图纸名称。。。
4-使用从一个范围到另一个范围的直接赋值进行复制。如果使用限定符,这将避免引用问题!,剪贴板内容保持完整。可能与Wow重复!非常感谢你的帮助!我真的很感激,我的代码现在可以工作了!