将信息传输到工作簿中的其他工作表,并允许不断更新和格式化

时间:2016-01-26 00:14:14

标签: excel vba excel-vba excel-2010

我有一个数据输入页面,它使用VBA代码输入主机。命令按钮。我需要1.要么将新信息提供到主列表的顶部,而没有额外的行已经到位,或者2.需要信息按区域过滤到单独的选项卡,最近列出的位于顶部。我遇到的问题是如何使每个区域的选项卡从主工作表自动更新。所有这些都在一本工作簿中。

VBA代码

Private Sub CommandButton1_Click()  

    Dim ProjectNumber As String  
    Dim Region As String  
    Dim Customer As String  
    Dim PlantName As String  
    Dim State As String  
    Dim PlantNumber As String  
    Dim Contact As String  
    Dim PhoneNumber As String  
    Dim Scope As String  
    Dim Value As String  
    Dim Year As String  
    Dim MW As String  
    Dim MFG As String  

    Worksheets("Entry").Select  
    ProjectNumber = Range("ProjectNumber")  
    Region = Range("Region")  
    Customer = Range("Customer")  
    PlantName = Range("PlantName")  
    State = Range("State")  
    PlantNumber = Range("PlantNumber")  
    Contact = Range("Contact")  
    PhoneNumber = Range("PhoneNumber")  
    Scope = Range("Scope")  
    Value = Range("Value")  
    Year = Range("Year")  
    MW = Range("MW")  
    MFG = Range("MFG")  
    Worksheets("Experience").Select  
    Worksheets("Experience").Range("A441").Select  
    If Worksheets("Experience").Range("A441").Offset(1, 0) <> "" Then  
    Worksheets("Experience").Range("A441").End(xlDown).Select  
    End If  
    ActiveCell.Offset(1, 0).Select  
    ActiveCell.Value = ProjectNumber  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Region  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Customer  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = PlantName  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = State  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = PlantNumber  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Contact  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = PhoneNumber  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Scope  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Value  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = Year  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = MW  
    ActiveCell.Offset(0, 1).Select  
    ActiveCell.Value = MFG  
    Worksheets("Entry").Select  
    Worksheets("Entry").Range("C6").Select  

End Sub

1 个答案:

答案 0 :(得分:0)

以下内容在第441行的正下方插入一个新的空白行,并将13个字符串值填入新行的列A:M。

Private Sub CommandButton1_Click()
    Dim vSTRs As Variant

    With Worksheets("Entry")
        vSTRs = Array(.Range("ProjectNumber").Value2, .Range("Region").Value2, _
                      .Range("Customer").Value2, .Range("PlantName").Value2, _
                      .Range("State").Value2, .Range("PlantNumber").Value2, _
                      .Range("Contact").Value2, .Range("PhoneNumber").Value2, _
                      .Range("Scope").Value2, .Range("Value").Value2, _
                      .Range("Year").Value2, .Range("MW").Value2, .Range("MFG").Value2)
    End With

    With Worksheets("Experience")
        .Cells(442, "A").EntireRow.Insert
        .Cells(442, "A").Resize(1, UBound(vSTRs) + 1) = vSTRs
    End With
End Sub

这应该是您的第一个选择。

有关远离依赖选择和激活以实现目标的更多方法,请参阅How to avoid using Select in Excel VBA macros