2017-04-26 145 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