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重复!非常感谢你的帮助!我真的很感激,我的代码现在可以工作了!