1

我有一个包含多张工作表的 Excel 工作簿。为了这个问题,工作表被命名为 Sheet1、Sheet2、Sheet3 等。我希望将 sheet1 中的 A 列复制到其他工作表中,并且随着新单元格添加到 sheet1 中的 A 列,它们将自动输入到工作簿中的其他工作表中。我不希望为此设置“结束范围;即:A100000”。例如,如果我在 Sheet1 的单元格 A1 中输入 First,单词“First”现在也应该出现在 Sheet2 的单元格 A1 中。我使用了以下代码,它似乎不起作用。任何帮助将不胜感激。

Private Sub Worksheet_Change(ByVal Target As Range)
        Call UpdateFromSheet1
End Sub

Sub UpdateFromSheet1(ByVal Sh As Object, ByVal Target As Range)
    If Sh.CodeName = "Sheet1" Then
        If Not Intersect(Target(1, 1), Range("A1:A1000")) Is Nothing Then
            Sh.Range("A1:A1000").Copy Sheet2.Range("A1")
        End If
    End If
End Sub
4

2 回答 2

1

更新

对于一个干净的非 VBA解决方案,您可以使用其他人提到的公式引用,但像这样输入。

在 Sheet2 单元格 A1 =If(Sheet1!A1="","",Sheet1!A1)这样您可以填写整个 A 列,如果 Sheet1 有没有数据的行,则不会弹出“0”。

我认为您有大致的想法,但我怀疑您的代码可能没有放在正确的位置。

对于VBA解决方案:

首先,您不需要从Worksheet_Change事件调用 sub(当然,除非您出于其他原因想要使用此 sub 并将变量传递给它。其次,如果您将此代码放在“Sheet1 的 VBE 中的工作表对象中” "它会如你所愿:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Columns("A")) Is Nothing Then

    Dim wks As Worksheet
    For Each wks In Sheets(Array("Sheet2", "Sheet3"))

        Target.EntireColumn.Copy wks.Columns(1)

    Next

End If


End Sub
于 2012-08-27T19:00:03.487 回答
0

这是excel的一个非常基本的用途。您可以将单元格设置为彼此相等。为此,您绝不需要 VBA 宏。

如果你把它放在 Sheet2 和 Sheet3 的单元格“A1”中:

=Sheet1!A1

然后,当您在 A1 中键​​入内容时,它将在第 2 和第 3 页上“镜像”。您可以将其自动填充到第 2 和第 3 页上 A 列中的所有单元格。

您熟悉术语自动填充吗?

如果您不理解我刚才所说的任何内容并且您只想运行一个宏然后运行它并开始输入:

Sub MacroBasicQuestion()

Dim wbk As Workbook
Set wbk = ThisWorkbook

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Set ws1 = wbk.Sheets(1)
Set ws2 = wbk.Sheets(2)
Set ws3 = wbk.Sheets(3)

Dim cell As Range

Set cell = ws2.Range("A1:A1")
ws2.Select
cell.FormulaR1C1 = "=Sheet1!RC"
cell.Select
Selection.AutoFill Destination:=Range("A:A"), Type:=xlFillDefault

Set cell = ws3.Range("A1:A1")
ws3.Select
cell.FormulaR1C1 = "=Sheet1!RC"
cell.Select
Selection.AutoFill Destination:=Range("A:A"), Type:=xlFillDefault

End Sub

祝你好运。

于 2012-08-27T19:07:34.153 回答