2017-10-11 7 views
0

ありがとうございます。私はExcelのVBAの世界で初心者です。実行していないVBAのwhileループ内に特定の行がありますが、他の行が1行おきに実行されます

私は作業しているスプレッドシートを持っています。このスプレッドシートには、複数の列と行を持つ生データがあります。私はシート全体をループし、特定の条件に基づいています(今週の値下がりやアイテムには値が開いているなど)、行の特定のセルを別のタブ(シート)にコピーしようとしています。スプレッドシート。

これで、whileループが正常に機能し、一部のセル値が次のタブにコピーされますが、1つのセル値だけがコピーされません。私はそれをデバッグしようとするとき。私は行が実行されているが、値がコピーされていないのが分かります。私は正しい列を参照しているかどうかを確認して、それが正しいかどうかチェックします。以下のコードをご覧ください。私はSubの外に定義された公的定数としてSht1Sht2を持っています。これはシート名 "トラッキングシート"と "ItemsDueSheet"用です。

Public Const Sht1 = "Tracking Sheet" 
Public Const Sht2 = "ItemsDueSheet" 

Sub ItemsDueThisWeek() 

Dim rwCounter As Integer 
Dim rstart As Integer 
Dim rEnd As Integer 
Dim increment As Integer 
rstart = 3 
rEnd = 249 
rwCounter = 5 
increment = 1 
While (rstart <= rEnd) 
    'MsgBox (Format(Sheets(1).Cells(rStart, 16))) 
    If (Format(Sheets(Sht1).Cells(rstart, 16), "ww-yyyy") = Format(Date, "ww-yyyy") And Sheets(Sht1).Cells(rstart, 15) <> "Closed - Done") Then 
     Sheets(Sht2).Cells(rwCounter, 2) = increment 
     Sheets(Sht2).Cells(rwCounter, 4) = Sheets(Sht1).Cells(rstart, 1) 
     Sheets(Sht2).Cells(rwCounter, 5) = Sheets(Sht1).Cells(rstart, 2) 
     **Sheets(Sht2).Cells(rwCounter, 8) = Sheets(Sht1).Cells(rstart, 7)** 
     Sheets(Sht2).Cells(rwCounter, 3) = Sheets(Sht1).Cells(rstart, 13) 
     Sheets(Sht2).Cells(rwCounter, 6) = Sheets(Sht1).Cells(rstart, 16) 
     Sheets(Sht2).Cells(rwCounter, 7) = Sheets(Sht1).Cells(rstart, 12) 

     rwCounter = rwCounter + 1 
     increment = increment + 1 
     'MsgBox ("A") 

    Else 

     'Sheets(2).Cells(rwcounter, 5) = Sheets(1).Cells(rStart, 1) 
     'Sheets(2).Cells(rwcounter, 6) = Sheets(1).Cells(rStart, 2) 
    End If 

    rstart = rstart + 1 

Wend 

End Sub 

ここでは、追跡シートからボタンクリックに基づいてセルをコピーしようとしているItemsdueSheetのレイアウトを示します。

enter image description here enter image description here

+0

私にはうまく見えます。私はProduct COdeが空白のセルをいくつか見ています...あなたは確かに 'Due'の値がありますか? (私は**と一緒に作業していないものをハイライトしたと仮定します) – KacireeSoftware

+0

データによって判断すると、現行の週に該当する予定日がある行では、列Gは常に空白になっているようです。列Gは、各「CAPA#」の「ヘッダー」レコードのように見える行にのみ挿入されますか? – YowE3K

答えて

0

@KacireeSoftware - だから、現在の日付が今週中に落ち、コラムO子の状態がクローズ完了と等しくない場合、私はテストしていた後、子供タスク番号、簡単な説明をCAPA番号をコピーします、期日、ワークストリームメンバーおよびエンティティを新しいシートに追加します。 あなたの前提は正しいです。私は動作していないコードを強調表示しています。 現在、スプレッドシートがどのように設定されているかは、製品がある場合、チャイルドデートがなく、チャイルドタスクがある場合は期限がありません。

@ YowE3K - はい列Gは、各CAPA#のヘッダレコードにのみ入力されます。

@KacireeSoftwareと@ YowE3Kありがとうございました。あなたの質問は、私が問題を見つけるのを助けてくれました。

コードの問題は、現在の日付が今週になり、OチャイルドステータスがClosed-Doneに等しくなく、CAPA#、子タスク番号、簡単な説明、期日、新しいシートへのワークストリームメンバーとエンティティ。ただし、プロダクト/プロセスエンティティ列は、これらの行のスプレッドシートでは空です。したがって、実行しても、そこにコピーするものは何も見つからず、それらの行に空白がコピーされます。

もう一度私はその方向に考えさせていただきありがとうございます。あなたは素晴らしいです。

関連する問題