1

複数のシートを含む Excel ワークブックがあります。この質問のために、シートには Sheet1、Sheet2、Sheet3 などの名前が付けられます。シート 1 の列 A を残りのシート全体に複製したいと思います。新しいセルがシート 1 の列 A に追加されると、ブック内の他のシートに自動的に入力されます。このために「終了範囲、つまり: A100000」を設定しないことをお勧めします。たとえば、Sheet1 のセル A1 に First と入力すると、Sheet2 のセル A1 にも「First」という単語が表示されます。次のコードを使用しましたが、動作していないようです。どんな助けでも大歓迎です。

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)そうすれば、シート 1 にデータのない行がある場合、列 A の全体を埋めることができ、「0」ポップアップが表示されません。

大まかな考えはお持ちだと思いますが、コードが適切な場所にない可能性があると思います。

VBAソリューションの場合:

まず、イベントからサブルーチンを呼び出す必要はありませんWorksheet_Change(もちろん、他の理由でこのサブルーチンを使用し、それに変数を渡したい場合を除きます)。次に、このコードを "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

エクセルの基本的な使い方です。互いに等しいセルを設定できます。これには VBA マクロは必要ありません。

これをSheet2とSheet3のセル「A1」に入れると:

=Sheet1!A1

次に、A1 に何かを入力すると、シート 2 と 3 に「ミラーリング」されます。これを、シート 2 と 3 の列 A のすべてのセルに自動入力できます。

autofillという用語をご存知ですか?

今言ったことを理解できず、ただマクロを実行したい場合は、これを実行して入力を開始します。

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 に答える