如何在工作表1中输入数据并将其传输到工作表2中

时间:2015-08-10 18:53:25

标签: excel vba excel-vba

我想在工作表(数据库类型)中输入信息,如果它进入工作表2 - 锁定工作表2中的信息,那么当我再次在工作表1中输入数据时,它会在下一行的工作表2中填充 - 这是否可能?像数据库一样?

表单1仅用于输入目的 谢谢 PB

2 个答案:

答案 0 :(得分:0)

是的......只需要一个按钮,将Sheet1中此单元格的信息发送到Sheet2中的该单元格,该单元格具有已定义的列但行等于下一个未使用的行。您可以在A中找到最后一个未使用的行;

Sheet1.Cells(Sheet1.Rows.Count,"A").End(xlUp).row

这样的东西
Sub button
    dim nextrow as long
    nextrow = Sheet2.Cells(Sheet1.Rows.Count,"A").End(xlUp).row + 1
    Sheet2.Range("A" & nextrow) = Sheet1.Range("A1")
End sub

在此示例中,工作表1单元格A1的信息始终转到Sheet2中A列中的下一个可用行。希望这会激发您的灵感。 (未经过测试的代码)。

答案 1 :(得分:0)

这是一个宏,只要有人改变了Sheet1!B2中的内容,它就会有效:

 Private Sub Worksheet_Change(ByVal Target As Range)
Dim entryWS As Worksheet, copyWS As Worksheet
Dim refRange As Range, copyRange As Range
Dim nextRow As Integer, startCol As Integer, endCol As Integer

'Since you want B:G let's say, for your entry data
startCol = 2
endCol = 7

Set entryWS = Sheets("Sheet1")
Set copyWS = Sheets("Sheet2")

With entryWS
Set refRange = .Range(.Cells(1, startCol), .Cells(1, endCol))
End With
If Not Application.Intersect(Target, refRange) Is Nothing Then 'If there's new info in your range
    Debug.Print "Working!"
    With copyWS
        nextRow = .Cells(1048576, 2).End(xlUp).Row + 1
        Set copyRange = .Range(.Cells(nextRow, startCol), .Cells(nextRow, endCol))
    End With

    copyRange.Value = refRange.Value
End If


End Sub

注意:您必须将其放在工作表对象中,而不是模块中。我把它放在" Sheet1"。

这假定您的"Sheet1"是您输入的位置。具体来说,您的用户正在将文本输入B1。输入Sheet1!B1后,它会将该文本添加到Sheet2,将当前列表向下移动一行。

编辑:要在工作表对象中输入,请先右键单击工作表,然后转到"查看代码": enter image description here

然后,选择您正在使用的工作表,并将数据粘贴到右侧。您现在可以运行宏(按下顶部的绿色播放按钮,或按F8逐步执行):

enter image description here