2017-04-26 3 views
0

Im folgenden Code habe ich die schwierigste Zeit, eine bestimmte Zelle im Variablenbereich "rngCell" zu identifizieren. In der "If" -Anweisung möchte ich eine bestimmte Zelle in der Spalte oder Zeile, in der die rngCell (die aktive Zelle ist), anstelle des Werts von rngCell kopieren. Ich habe versucht, Offset zu verwenden, aber habe versagt. Beispiel: Wenn rngCell auf e42 steht, benötige ich möglicherweise einen Wert von e2 oder a42.VBA: Zellwert im Variablenbereich kopieren

Vielen Dank.

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

Bitte beachten Sie, das nur einen Teil des Codes ist. – Vince

+0

Der Code, den Sie uns zeigen, wird mit dem Laufzeitfehler 91 in die Luft gehen, da 'ws' niemals zugewiesen wird. Es besteht auch keine Notwendigkeit, das Blatt "FileShares" auszuwählen. –

+2

Ich bin auch ziemlich verblüfft von 'Dim k &', vorausgesetzt, Sie verwenden nicht [Typ Hinweise] (http://stackoverflow.com/documentation/vba/877/declaring-variables/2960/type-hints#t= 20170426200910747442) überall. Warum geben Sie nicht einen expliziten, benannten Typ wie alles andere? –

Antwort

1

Wenn rngCell ist E42 dann:

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

oder

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

Danke Tim. Deine zwei Sekunden des Nachdenkens haben mir 5 Stunden weiterer Kopfschmerzen erspart. – Vince