2017-04-26 143 views
0

在以下代碼中,我最難確定變量範圍「rngCell」中的特定單元格。在「If」語句中,我想複製rngCell(活動單元格所在的)列或行中的特定單元格,而不是rngCell的值。我嘗試使用偏移量,但一直在失敗。例如:如果rngCell在e42,我可能需要從e2或a42得到一個值。VBA:複製變量範圍中的單元格值

謝謝。

Dim rngCell As Range 
Dim lngLstRow As Long 
Dim ws As Worksheet, resultsWS As Worksheet 

lngLstRow = ws.UsedRange.Rows.Count 
Worksheets("FileShares").Select 

j = 4 
p = 1 
q = 4 
g = 6 

Dim k&      
For k = 9 To 50 
With ws 
    For Each rngCell In .Range(.Cells(8, k), .Cells(lngLstRow, k)) 

     For i = LBound(maxKeywords) To UBound(maxKeywords) 
      If rngCell.Value = maxKeywords(i) And rngCell.Interior.ColorIndex = 3 Then 
       resultsWS.Cells(g, 2).Offset(j + p, 0) = rngCell.Value 

      g = g + 1 

      j = q + p - 5 'Used to start at row 8 and every row after 
      End If 
     Next i 
    Next rngCell 

End With 
Next k 
+0

請注意,這是代碼的一部分。 – Vince

+0

您向我們展示的代碼將會因運行時錯誤91而爆發,因爲'ws'永遠不會被分配。也沒有必要''選擇'FileShares'工作表。 –

+2

由於沒有使用[type hints],所以我也非常喜歡'Dim k&'(http://stackoverflow.com/documentation/vba/877/declaring-variables/2960/type-hints#t= 20170426200910747442)任何地方。爲什麼不給它一個明確的,命名的類型像其他的一樣? –

回答

1

如果rngCell是E42則:

rngCell.EntireRow.Cells(1) '>>A42 
rngCell.EntireColumn.Cells(2) '>>E2 

ws.Cells(rngCell.Row, 1)  '>>A42 
ws.Cells(2, rngCell.Column) '>>E2 
+0

謝謝蒂姆。你2秒鐘的思考爲我節省了5個小時的頭痛。 – Vince