2016-07-28 7 views
0

誰かが私の問題を把握するのを助けることができますか? このコードは、条件が満たされない場合に次の列に移動したいと思っています。私は固執しており、どこで処理するのかわかりません。スニペットで次の列に移動

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 

Q & jの値が要件を満たしていない場合は、その後、私はそうでZとあるQ後の第九の文字を確認する必要があります。 ところで、私がこれを比較するのは、セルの日付の値です。

+2

あなたが全体のコードを共有することができます。私はあなたのループ変数がループ内のどこでも使用されているのを見ていません。また、他の変数jの値は何ですか、lrow3..etc.私はもう少しまたは完全なコードを共有することができる場合は、他の人に良いと感じて – Siva

+0

@シヴァ私の質問が更新されました。 – ramj

+0

更新ありがとうございます。あなたのコードのJ値は?あなたはこのforループの中で列を反復していますか? – Siva

答えて

0

少数の観測

  • dDate = Format(Now(),"mm/dd/yyyy")は `dDate = Date
  • DateValue(Format(Range("Q" & j).Value, "mm/dd/yyyy")) is the same as DATEVALUE(レンジ( "Q" & J).Valueの)と同じである
  • あなたは、カラムQで開始している状況であれば9列以上移動してもう一度チェックしてください。あなたはこれを100回行う。最後の列は、列917(列文字コード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

'DateRange = wsSample .Cells(j、 "Q")。オフセット(0、iOffset)を設定する必要があります。ありがとう。 – ramj

+0

@ramjありがとうございます! –

関連する問題