[英]macro: copy paste cell if condition met
只需執行一個步驟,即可更新database_ gudang中的庫存編號(列“ D”)(database_ gudang中的庫存已添加到來自form_penerimaan的收據金額(列“ K”)中)
更新基於項目名稱(nama barang),因此,如果form_penerimaan中的項目名稱(列“ C”)與database_ gudang中的項目名稱(列“ B”)相同,database_ gudang中的庫存將更新。
但是有一個問題,僅在第2、9、10行(黃色單元格)中進行了更新。 3,4,5行也應更新。
非常感謝您的幫助。
問候。
Sub Module1()
s = 10
OT1 = Sheets("Database_Gudang").Cells(Rows.Count, "D").End(xlUp).Row
For j = 2 To OT1
NB1 = Sheets("Database_Gudang").Cells(j, "B").Value
Sheets("Form_Penerimaan").Activate
If Cells(s, "C").Value = NB1 And Cells(s, "C").Value <> "" Then
Sheets("Form_Penerimaan").Cells(s, "Q").Copy
Sheets("Database_Gudang").Activate
Sheets("Database_Gudang").Cells(j, "G").Select
Selection.PasteSpecial Paste:=xlPasteValues
s = s + 1
End If
Next j
End Sub
嗨,歡迎來到stackoverflow :)
避免使用.Select
和.Activate
。 直接使用變量和對象。 您可能需要查看如何避免在Excel VBA中使用“選擇”
您正面臨該問題,因為您沒有在第二張工作表的單元格中循環。
這是您要嘗試的嗎? ( 另 )
我已經注釋了代碼,因此您可能對理解它沒有任何問題。 如果您願意,請分享確切的錯誤消息,我們將從那里獲取。
Sub Sample()
Dim wsThis As Worksheet, wsThat As Worksheet
Dim i As Long, j As Long
Dim wsThisLRow As Long, wsThatLRow As Long
'~~> Set your worksheets
Set wsThis = ThisWorkbook.Sheets("Database_Gudang")
Set wsThat = ThisWorkbook.Sheets("Form_Penerimaan")
'~~> Find relevant last row in both sheets
wsThisLRow = wsThis.Range("D" & wsThis.Rows.Count).End(xlUp).Row
wsThatLRow = wsThat.Range("C" & wsThat.Rows.Count).End(xlUp).Row
With wsThis
'~~> Loop through cell in Database_Gudang
For i = 2 To wsThisLRow
'~~> Loop through cell in Form_Penerimaan
For j = 10 To wsThatLRow
'~~> Compare values and get values across if applicable
If .Range("B" & i).Value = wsThat.Range("C" & j).Value Then
.Range("G" & i).Value = wsThat.Range("Q" & j).Value
Exit For
End If
Next j
Next i
End With
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.