2016-03-29 5 views
0

私が作業しているvbaスクリプトがあります(数百行)。コードの1つのセクションは、セルの行をループし、残りのデータに先行する「文字列」を追加することになっています。なぜこれが動作していないのかわかりませんが、元の値で何とかデータを上書きしていると思われます。ヘルプは非常に高く評価されます。ありがとうございました。元の値の前に "文字列"を含めるようにセルの値を変更する

lastRow = Cells(Rows.Count, "A").End(xlUp).Row 
For y = 1 To 26 
If UCase(Cells(1, y).Value) Like "*MISC COMMENTS*" Then 
    Cells(1, y).Value = "Comments" 
    For Q = 2 To lastRow 
    If Cells(Q, y).Value <> "" Then 
    Cells(Q, y).Value = "Misc Comment - " & Cells(Q, y).Value 
    End If 
    Next Q 
End If 
Next y 

データは、私は私のスクリプトがエラーなしで

Comments       '<-- Header' 

Misc Comment - This is a simple '<-- Data' 
Misc Comment - Problem but I  '<-- Data' 
Misc Comment - cannot figure  '<-- Data' 
Misc Comment - it out.    '<-- Data' 

実際の結果(データは変更されません)

Misc Comments etc. '<-- Header' 

This is a simple '<-- Data' 
Problem but I  '<-- Data' 
cannot figure  '<-- Data' 
it out.    '<-- Data' 

にデータを向けるべきだと考え

Misc Comments etc. '<-- Header' 

This is a simple '<-- Data' 
Problem but I  '<-- Data' 
cannot figure  '<-- Data' 
it out.    '<-- Data' 

のように見えます私のエラーは私だと思うn次のチャンク

If Cells(Q, y).Value <> "" Then 
    Cells(Q, y).Value = "Misc Comment - " & Cells(Q, y).Value 
End If 

私はそれを間違って呼び出す方法はわかりませんが、

+0

のisEmpty(細胞(Q、y)は)= Falseをした場合のライン '細胞(Q、Y).Valueの= "その他コメント - " にブレークポイントを入れて – WltrRpo

+0

次に試してみてください&細胞(Q、Y)。あなたのコードがその行に当たっているかどうかを確認してください。そうでない場合は、ステップスルーしてデバッグして*なぜ*そうでないかを調べる。 –

+0

@DavidZemens私は先に進んでブレークポイントを追加しました(これは発見すべき素晴らしい機能です)。上の 'If Cells(Q、y).Value <> 'Then Then'ステートメントからデータを含む行をスキップしているようです。私はこのコードが "空の"ボックスをスキップし、データを持つボックスにデータを追加すると考えました。 – bluerojo

答えて

3

Misc Comments etc.は、MISC COMMENTSと同じではありません。比較文字列をワイルドカードする必要があります。

If UCase(Cells(1, y).Value) Like "*MISC COMMENTS*" 

ここでは、いくつかの変更を加えて書き直しています。 の 'activesheet codeの最後の行'を含むvarで何をしたいのかは不明です。

Dim y As Long, q As Long, lastRow As Long, lastRowString As String 
lastRowString = "last row of activesheet code" 

With Worksheets("sheet2") 
    For y = 1 To 26 
     If UCase(.Cells(1, y).Value) Like "*MISC COMMENTS*" Then 
      .Cells(1, y).Value = "Comments" 
      lastRow = .Cells(Rows.Count, y).End(xlUp).Row 
      For q = 2 To lastRow 
       If .Cells(q, y).Value <> "" Then 
        .Cells(q, y) = "Misc Comment - " & .Cells(q, y).Value 
       End If 
      Next q 
      Exit For '<~~ really want to exit the loop? 
     End If 
    Next y 
End With 
+0

申し訳ありません、私の実際のコードはそこにあります。私の "その他のコメント - "文字列でフィールドを更新しません。 – bluerojo

+1

'lastRow'と混乱がありました。文字列を割り当てましたが、長い文字列として使用しました。 – Jeeped

+0

'Exit For'文は干渉していますか?また、If Trim(.Cells(q、y).Value)<> "" '' '<>" "'を実行する価値があるかもしれません。 –

関連する問題