2016-07-28 27 views
0

Kann mir bitte jemand helfen, mein Problem zu lösen? Ich habe diesen Code, den ich in die nächste Spalte verschieben möchte, wenn die Bedingung nicht erfüllt ist. Ich bin fest und weiß nicht, wo ich weitermachen soll.Wechsel zur nächsten Spalte

Dim lrow3, lrow1 as long 
dim dDate as Date 
dim yrNum, j as Integer 

dDate = Format(Now(),"mm/dd/yyyy") 

lrow3 = ActiveSheet.Cells(Rows.count, 2).End(xlUp).Row 
lrow1 = Sheets("Sample").Cells(Rows.count, 2).End(xlUp).Row 
for j = 2 to lrow1 
For yrNum = 1 To 100 
    If DateValue(Format(Range("Q" & j).Value, "mm/dd/yyyy")) >= DateValue(dDate) And _ 
    DateValue(Format(Range("R" & j).Value, "mm/dd/yyyy")) <= DateValue(dDate) Then 
    ActiveSheet.Range("D" & lrow3 + 1).Value = Range("T" & j).Value 
    ActiveSheet.Range("E" & lrow3 + 1).Value = Range("U" & j).Value 
    Exit For 
    Else 
     Range("Q" & j) = ActiveCell 
     Range("Q" & j) = ActiveCell.Offset(0, 9) 
    'after executing this is I have to set this offsetted cell to be the active one 
    'on which i will be referring in the next loop 
    End If 

Next yrNum 
next j 

Im Schnipsel, wenn der Wert in Q & j nicht die Anforderungen erfüllt hat, dann habe ich den 9. Brief nach Q zu überprüfen, die Z ist und so weiter. Übrigens, was ich hier vergleiche, sind Datumswerte in der Zelle.

+2

Können Sie gesamten Code teilen. Ich sehe Ihre Looping-Variable nirgendwo in der Schleife. Auch was sind die Werte anderer Variablen j, lrow3..etc.Ich glaube, es wird gut für andere sein, wenn Sie ein bisschen mehr oder vollständigen Code teilen können – Siva

+0

@Siva Meine Frage aktualisiert. – ramj

+0

Danke für die Aktualisierung. Was ist der J-Wert Ihres Codes? Durchlaufen Sie Zeilen durch Spalten in dieser for-Schleife? – Siva

Antwort

0

Einige Beobachtungen

  • dDate = Format(Now(),"mm/dd/yyyy") ist die gleiche wie dDate = Date
  • DateValue(Format(Range("Q" & j).Value, "mm/dd/yyyy")) is the same as DatWert (Range ("Q" & j) .Value) `
  • Sie sind in der Spalte Q beginnen und wenn die Bedingungen Treffen Sie nicht über 9 Spalten und überprüfen Sie erneut. Du machst das 100 mal. Die letzte Spalte ist Spalte 917 (Spalte-Buchstaben-Code AIG)

Sub RefactoredCode() 

    Dim lrow3, lrow1 As Long 
    Dim DateRange As Range 
    Dim wsSample As Worksheet 
    Dim yrNum, j As Integer, iOffset As Integer 

    Set wsSample = Worksheets("Sample") 

    lrow3 = Cells(Rows.Count, 2).End(xlUp).Row 
    lrow1 = wsSample.Cells(Rows.Count, 2).End(xlUp).Row 

    For j = 2 To lrow1 
     For yrNum = 1 To 100 

      iOffset = (yrNum * 9) - 9 
      Set DateRange = wsSample.Cells(j, "Q").Offset(0, iOffset) 

      If DateValue(DateRange.Value) >= Date And _ 
       DateValue(DateRange.Offset(0, 1).Value) <= Date Then 
       lrow3 = lrow3 + 1 
       Range("D" & lrow3).Value = wsSample.Cells(j, "T").Offset(0, iOffset).Value 
       Range("E" & lrow3).Value = wsSample.Cells(j, "U").Offset(0, iOffset).Value 
       Exit For 
      End If 

     Next yrNum 
    Next j 

End Sub 
+0

Die Zeile 'DateRange = wsSample .Cells (j, "Q"). Offset (0, iOffset) 'muss gesetzt werden. Vielen Dank. – ramj

+0

@ramj Danke !!! –

Verwandte Themen