2012-04-20 22 views
2

昨日に援助求め:VBAマクロを作成し、新しいブック、ワークブック 'B' からVBA - 別のブックから行を削除しますか?

  1. ワークブック 'B'
  2. 節約にワークブック 'A' からのデータ行上
  3. コピーそれ

昨日のポスト(VBA - How to copy row in Excel from one workbook to another?)を閉鎖する前に、適切な形式でブック「B」は私の問題への固溶体を発表しました。

それ以来、私は自分のコードをさらに進歩させ、その新しい要件を持っています。私は今、ワークブック 'A' sheet1のセルAiの値がワークブック 'B' sheet1のセルAiの値と一致するかどうかによって、ワークブック 'B'から行内にコピーされた行を削除するコードセクションを持つ必要があります。インクリメントされる整数変数)。このコードは、行内にコピーされたコードのセクションの後に実行されます。そのため、プライマリ行は新しい情報で更新されています。

私は以下の持っていることはあなたに私が持っているもののアイデアを与える必要があります。

... 
Do Until IsEmpty(newBk.Sheets("Bad Records").Range("A" & extFileRowCount)) 
    If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _ 
     mainBk.Range("W" & sdRow).Value Then 
     'then delete the row and reinsert 
     '***** Stuck here. How do I remove the row? *****'  
     newBk.Sheets("Bad Records").Range _ 
      ("A" & extFileRowCount).remove '??? 
      newRowCount = newRowCount + 1 
      mainBk.Rows(sdRow).Copy newBk.Sheets _     
       ("Bad Records").Rows(newRowCount) 
     Else 
      extFileRowCount = extFileRowCount + 1 
     Loop 
... 

を私は正しいアルゴリズムを持っていると思うが、私は、行を削除する方法についてこだわっています。どんな助けでも大歓迎です。

QF

+0

もちろん、ああ。私の悪い。 –

+0

回答を受け取る義務はありません。回答は、他の有料サイトにあるように、SOでクローズされていません。質問は常に開いたままです。 http://meta.stackexchange.com/questions/21258/asking-upvote-for-accepted-answer – Fionnuala

答えて

1

あなたがループ内でこのラインを持っている理由私もわからない

mainBk.Rows(sdRow).Copy newBk.Sheets _     
("Bad Records").Rows(newRowCount) 

しかし、あなたは、このコード(未テスト

Sub Sample() 
    Dim i As Long 
    Dim Delrange As Range 

    Application.ScreenUpdating = False 

    ' 
    '~~> Rest of the code 
    ' 

    For i = extFileRowCount To 1 Step -1 
     If newBk.Sheets("Bad Records").Range("A" & extFileRowCount) = _ 
      mainBk.Range("W" & sdRow).Value Then 

      If Delrange Is Nothing Then 
       Set Delrange = newBk.Sheets("Bad Records").Rows(i) 
      Else 
       Set Delrange = Union(Delrange, newBk.Sheets("Bad Records").Rows(i)) 
      End If 
     End If 
    Next i 

    If Not Delrange Is Nothing Then Delrange.Delete 

    ' 
    '~~> Rest of the code 
    ' 

    Application.ScreenUpdating = True 
End Sub 
を使用することができます行を削除します

HTH

+0

"mainBk.Rows(sdRow).Copy newBk.Sheets(" Bad Records ")の理由。行(newRowCount ) "は、昨日投稿したように、ブック「A」からブック「B」に行をコピーする方法を提供したためです。この記事で説明しているように、(一致条件に基づいて)行を削除して再挿入するという新しい要件があります。あなたのテストされていないコードを見て行きます。どうもありがとう。 –

関連する問題