在工作表的一个单元格中输入一个值,相同的值会记录到另一张工作表中,并逐行创建值记录

在工作表的一个单元格中输入一个值,相同的值会记录到另一张工作表中,并逐行创建值记录

希望有人能帮助我......

如果我有这 4 个单元格,则每次我将一个值输入到其中任何一个单元格中时,它都会在同一工作簿的另一张表上创建一个日志。

例如,如果我在工作表 1 上有单元格 B1、C2、B3 和 A2。如果我在其中一个单元格中输入一个值并按下回车键,相同的值将显示在工作表 2 的单元格 A2 上。回到工作表 1,在我按下回车键并在 4 个单元格之一中输入一个值之后,该值将消失并等待我向这 4 个单元格中的任意一个输入下一个值。因此顺序是...在工作表 1 的 4 个单元格之一中输入一个值,它会自动记录到工作表 2 的 A2 中。工作表 1 上的下一个值将记录到工作表 2 的 A3 上并沿着工作表 2 的行向下移动...每次我按下回车键时(请记住,在我按下回车键后,工作表 1 上的 4 个单元格中的任意一个的值都需要消失)。

答案1

最简单的方法是将Worksheet_Change函数放入工作表代码中,Sheet1通过右键单击“Sheet1”选项卡并选择查看代码。

解释

我们可以使用类似这样的方法来跟踪 Sheet1 中的更改:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Or Target.Address = "$C$2" Or Target.Address = "$B$3" Or Target.Address = "$A$2" Then
        MsgBox ("Value changed")
    End If
End Sub

这只是在工作表中查找更改,并将更改作为变量返回Target。然后我们使用在表单中返回的
更改地址来检查更改的地址。然后, 一个简单的语句检查目标是否是我们指定的任何单元格。Target.Address$A$1
If

现在我们需要将值传到另一张表。
首先我需要一些变量。我将它们称为 rSave(保存值的范围)和 iRow(捕获最后使用的行的整数)。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer, rSave As Range
Set rSave = Worksheets("Sheet2").Range("A1")
    If Target.Address = "$B$1" Or Target.Address = "$C$2" Or Target.Address = "$B$3" Or Target.Address = "$A$2" Then
        iRow = rSave(Rows.Count).End(xlUp).Row
        rSave.Offset(iRow).Value = Target.Value
        'Target.Value = ""
    End If
End Sub

我们将范围变量设置为我们想要开始输出数字的单元格上方。
我们检查更改并设置iRow为 Sheet2 中列的最后使用的行。
我们用行偏移范围iRow并写入目标数字。

然后,我们想将 Sheet1 中的值重新设置为零。但是,这会触发我们正在跟踪的单元格的变化,并基本上会导致无限循环。
为了解决这个问题,我们首先检查单元格是否为空,然后再试一次。

最后我们得到这样的结果:

实际答案

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Integer, rSave As Range
Set rSave = Worksheets("Sheet2").Range("A1")
    If Target.Address = "$B$1" Or Target.Address = "$C$2" Or Target.Address = "$B$3" Or Target.Address = "$A$2" Then
        If Target.Value <> "" Then
            iRow = rSave(Rows.Count).End(xlUp).Row
            rSave.Offset(iRow).Value = Target.Value
            Target.Value = ""
        End If
    End If
End Sub

祝你好运!

请注意,这将保存任何事物在 Sheet1 的单元格中输入。您可以通过And在 处添加 来限制此操作If Target.Value <> "" Then,并检查更多条件,例如特定数字或类似条件。

相关内容