2016-07-22 99 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上的信息 –

相關問題