2016-07-22 178 views
0

所以我必须在用户输入一些信息的代码去一个新行,并把它比作一个表,如果它发现一个匹配,它把用户信息的新行已创建。 我无法将信息添加到创建的行。这里是我的代码我需要用户输入使用VBA

Sub findData() 
    Dim workflow As String 
    Dim finalrow As Integer 
    Dim i As Integer 

    workflow = Sheets("Sheet1").Range("c5").Value 
    servergri = Sheets("sheet1").Range("c9").Value 
    gridf = Sheets("sheet1").Range("c9").Value 
    finalrow = Sheets("Sheet3").Range("c100").End(xlUp).Row 

    For i = 5 To finalrow 
     If Cells(i, 3) = workflow Then 
      If Cells(i, 4) = servergri Then 
       Range(Cells(i, 3), Cells(i, 8)).Select 
       If ActiveCell.Offset(1).EntireRow.Insert Then 
        'what do I put so that workflow , sergri, gridf, information will go to the new row create? 
       ElseIf Cells(i, 5) = gridf Then 
        Range(Cells(i, 3), Cells(i, 8)).Select 
        If ActiveCell.Offset(1).EntireRow.Insert Then 
        Else 

        End If 
       End If 
      End If 
     End If 
    Next 
End Sub 
+0

你想要什么信息,将新行吗? – 2016-07-22 06:04:44

回答

0

让我们从这里开始。显然,如果条件与您的用户输入相匹配,您正在循环表格(“Sheet3”)上的行以查找插入行。

结合我所有的if语句为一体,完全有资格上表Sheet 3单元格引用,并添加一些示例代码来演示如何将数据添加到新行。

Sub findData() 
    Dim workflow As String 
    Dim finalrow As Integer 
    Dim i As Integer 

    With Sheets("Sheet1") 
     workflow = .Range("C5").Value 
     servergri = .Range("C9").Value 
     gridf = .Range("C9").Value 
    End With 

    With Sheets("Sheet3") 
     finalrow = .Range("C" & Rows.Count).End(xlUp).Row 

     For i = 5 To finalrow 
      If .Cells(i, 3) = workflow And (.Cells(i, 4) = servergri Or .Cells(i, 5) = gridf) Then 

       .Rows(i).Insert 
       'Add new information to the new row. 
       'The new row number is still = i 

       .Cells(i, 1) = "???" 
       .Cells(i, 2) = "???" 
       .Cells(i, 3) = "???" 
       .Cells(i, 4) = "???" 

       'If you only want to add one row then your should exit the loop 
       Exit For 
      End If 
     Next 
    End With 
End Sub 

这有帮助吗?你需要澄清吗?

0

见下面我的代码进行比较,以你的。这应该做你想做的,但它是未经测试:

Sub findData() 
Dim workflow As String 
Dim finalrow As Integer 
Dim i As Integer 

workflow = Sheets("Sheet1").Range("c5").Value 
servergri = Sheets("sheet1").Range("c9").Value 
gridf = Sheets("sheet1").Range("c9").Value 
finalrow = Sheets("Sheet3").Range("c100").End(xlUp).Row 

For i = 5 To finalrow 
    If Cells(i, 3) = workflow Then 
     If Cells(i, 4) = servergri Then 
      ActiveCell.Offset(1).EntireRow.Insert 
      Range(Cells(i, 3), Cells(i, 8)).Copy 
      Range(Cells((i+1),3)).PasteSpecial xlPasteValues 
     ElseIf Cells(i, 5) = gridf Then 
      ActiveCell.Offset(1).EntireRow.Insert 
      Range(Cells(i, 3), Cells(i, 8)).Copy 
      Range(Cells((i+1),3)).PasteSpecial xlPasteValues 
     End If 
    End If 
Next i 
End Sub 
+0

谢谢你,杰森,但我不想在列中添加,也不是我们正在比较的那个。我想补充一点,在Sheet1 @jason –

+0

用户输入难道我理解正确,你在工作表Sheet 3,用户正在进入数据之一,该表是在Sheet1?如果没有,请澄清这里发生了什么,以便我可以帮助您修复此代码。 – Jason

+0

用户在表单1上输入数据,然后从表单3转到表单3查找类似的内容。如果它找到一个,那么它将添加一行,并添加用户放在工作表1上的信息 –

相关问题