如何选择工作表上的特定单元格?

时间:2020-12-21 20:01:28

标签: excel vba

我正在导入报告,将其发布到工作表,创建一个新选项卡(工作表 - 以“W(Date)”命名,并从原始表创建 MS Query 表以在新选项卡上创建过滤表。< /p>

当我命名新工作表时,我有一个汇总数据工作表,我想在其中将新工作表名称输入到 F 列中的第一个打开的单元格中。然后我可以从工作表名称中创建一个动态列表,以逐个表提取数据到工作簿前面的图表页面。

在下面的部分,当我到达声明 wsDest1.Range("F1" & RowCount).Select 的行时,光标向下跳到列中的第 110 行,而不是第 11 行。

使用带有 Print wsDest1.Cells(wsDest1.Rows.Count, "F").End(xlUp).Row 的立即窗口返回“10”。 使用 Print activesheet.usedrange.address 返回 $A$1:$I$10 所以对于列“F”它应该仍然是 11 来放置光标。

大多数变量在脚本的顶部声明,或者是在操作之前立即声明。脚本运行没有错误,除了在脚本末尾放置光标。

额外的 100 行来自哪里?

    Sheets.Add After:=Sheets(Worksheets.Count)
    'Sheets("Sheet1").Select
        
    Set wks = ActiveSheet
    Do While sName <> wks.Name
        sName = Application.InputBox _
          (Prompt:="Enter new worksheet name")
        On Error Resume Next
        wks.Name = sName
        On Error GoTo 0
    Loop
        
    Set wks = Nothing
         
    'Define value "n" = sName
    n = sName
            
    Set wsDest1 = Workbooks("TG Shipped Lines_Late Shipment Tracking_WorkInProgress.xlsm").Worksheets("SUMMARY DATA")
        
    wsDest1.Activate
        
    RowCount = wsDest1.Cells(wsDest1.Rows.Count, "F").End(xlUp).Row
        
    wsDest1.Range("F1" & RowCount).Select
        
    Selection.Value = n
        
    Set wsDest1 = Nothing
        
End Sub

1 个答案:

答案 0 :(得分:3)

wsDest1.Range("F1" & RowCount).Select

应该

wsDest1.Range("F" & RowCount).Select

编辑:正如其他人指出的那样,不需要任何选择/激活:

    Dim wks As Worksheet, wb As Workbook, sName
    
    Set wb = ActiveWorkbook
    
    Set wks = wb.Worksheets.Add(After:=wb.Worksheets(wb.Worksheets.Count))
    Do While sName <> wks.Name
        sName = Application.InputBox(Prompt:="Enter new worksheet name")
        On Error Resume Next
        wks.Name = sName
        On Error GoTo 0
    Loop
    
    'If "TG Shipped Lines_Late Shipment Tracking_WorkInProgress.xlsm"
    '   is where this code is running, then this line will do the rest
    ThisWorkbook.Worksheets("SUMMARY DATA").Cells(Rows.Count, "F") _
            .End(xlUp).Offset(1, 0).Value = wks.Name