首页 > 解决方案 > 用户表单用“with”填充多张工作表

问题描述

我的代码有问题。我需要用一个用户表单更新多张工作表。但是,我的代码不断给我错误。任何帮助,将不胜感激。

Private Sub AddItem_Click()
    Dim r As Long
    Dim r1 As Long
    Dim Sheet1 As Worksheet
    Dim Sheet4 As Worksheet

    With Worksheets("Sheet1", "Sheet4")
        r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        r1 = .Range("A" & .Rows.Count).End(xlUp).Row + 1
       .Range("A" & r) = Me.txtFN
       .Range("A" & r1) = Me.txtFN
       .Range("B" & r) = Me.txtLN

标签: excelvba

解决方案


Worksheets属性采用单个参数,而不是工作表名称列表;您需要通过调用来包装工作表名称列表,Array(...)以便为其提供多个工作表名称。

With Worksheets(Array("Sheet1", "Sheet4"))

但这样做只会使Worksheets调用成功 - 它仍然不会返回您期望使用的对象。

With块包含对对象的引用。在这种情况下,对象类是Excel.Sheets,它是工作表的集合

工作表集合没有属性Range;你不能像对待单身一样对待它Worksheet

假设您打算将该逻辑应用于集合中的所有Worksheets对象,则需要遍历该集合中的工作表。

Dim ws As Worksheet
For Each ws In Worksheets(Array("Sheet1", "Sheet4"))
    With ws
        r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        ...
    End With
Next

推荐阅读