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

'ws'は決して割り当てられないので、あなたが私たちに見せているコードは、ランタイムエラー91で爆発します。 'FileShares'シートを' .Select 'する必要もありません。 –

+2

[タイプヒント](http://stackoverflow.com/documentation/vba/877/declaring-variables/2960/type-hints#t=)を使用していないので、私は「Dim k& 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

Timありがとうございます。思考の2秒は、さらに頭痛の5時間を保存しました。 – Vince

関連する問題