我根本不使用VBA。我在網上找到了一些代碼,讓我朝著正確的方向前進,但是,我正在努力如何只復制“A”列中的值,而不是復制所有行。粗體/斜體區域是我認為問題所在。
`For i = 2 To a
If Sheets(Range("O1").Value).Cells(i, 9).Value = "False" Then
***Sheets(Range("O1").Value).Rows(i).Copy***
Worksheets("Product_Lookup").Activate
B = Worksheets("Product_Lookup").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Product_Lookup").Cells(B 1, 1).Select
ActiveSheet.Paste
Worksheets("Product_Lookup").Activate`
uj5u.com熱心網友回復:
使用變數
- 通過使用變數,您的代碼將變得更具可讀性(易于理解)。
- 激活和選擇通常會導致錯誤并嚴重減慢操作速度。避免這種情況在這篇文章中進行了說明。
- 下面說明了
Workbook-Worksheet-Range層次結構。
' The usual approach is e.g.:
'Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
'Dim iws As Worksheet: Set iws = wb.Worksheets("Sheet1")
' Note that 'iws' could actually be 'dws', we don't know!
Dim iws As Worksheet: Set iws = ActiveSheet ' unknown worksheet?
Dim wb As Workbook: Set wb = iws.Parent
Dim sws As Worksheet
On Error Resume Next ' check if the worksheet exists
Set sws = wb.Worksheets(CStr(iws.Range("O1").Value)) ' it may be empty!
On Error GoTo 0
If sws Is Nothing Then Exit Sub ' the worksheet doesn't exist
Dim dws As Worksheet: Set dws = wb.Worksheets("Product_Lookup")
Dim dCell As Range
Set dCell = dws.Cells(dws.Rows.Count, "A").End(xlUp).Offset(1)
For i = 2 To a
If CStr(sws.Cells(i, "I").Value) = "False" Then
sws.Cells(i, "A").Copy dCell
' If you only need values then the following is more efficient:
'dCell.Value = sws.Cells(i, "A").Value
Set dCell = dCell.Offset(1)
End If
Next i
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415387.html
標籤:
