2017-10-26 16 views
-1

を使用する場合は、表がリサイズではない私は、一般的にコーディングに比較的新しいですが、ここに行く:エクセル:VBA

私は整理しようとしていますmembershipdataの膨大なリストを持っています。これは、データが変わるにつれて毎週行われる予定なので、私は少し作業を自動化しようとしています。

私は既存のテーブルの下に別のシートにデータの行全体が、特定の細胞が特定のテキストが含まれる場合のコピーコード、およびペーストを(助けを借りて)書かれています。

マクロを使用してこれをやったときにCtrl + CとCtrl + Vを使用している場合、それはどうなるのようにしかし、テーブルのdoesntのは、それに応じてサイズを変更。 I.今週より多くのデータがあるときは、テーブルは十分に大きくないので、テーブル内のソートオプションはすべてのデータをソートしません。

私はこのコードを使用して、テーブルのサイズを変更することができました:これは正常に動作します

Sub sortOK() 

Dim sht As Worksheet 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim StartCell As Range 

Set sht = Worksheets("OK") 
Set StartCell = Range("A1") 

    Worksheets("OK").UsedRange 

    LastRow = StartCell.SpecialCells(xlCellTypeLastCell).Row 
    LastColumn = StartCell.SpecialCells(xlCellTypeLastCell).Column 

    sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select 

    sht.ListObjects("OK").Resize Range(StartCell, sht.Cells(LastRow, LastColumn)) 

End Sub 

、しかしそれだけで私は、この特定のシートを見ていたとき、私は別のシートから操作傾ける動作します。 どうすればいいですか?私はまた、他の4つのリストに一度に同じ操作をしたいと思っ

、独自のスプレッドシートの各。

私は一日中この問題に立ち往生しており、私の頭は爆発しようとしています!

ありがとうございます。

+0

*私は(助けて)特定の細胞が特定のテキストが含まれており、既存のテーブルの下に別のシートに貼り付け、それは*それはあなたが私たちを示したコードではない場合、データのコピー行全体をコードを書かれています。そのコードを私たちに教えてください。 –

+0

範囲オブジェクトの完全修飾については[こちら](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba)をご覧ください。 'Select'や' Activate'を使わないでください。範囲を適切に修飾し、実行時にどのシートがアクティブであるかにかかわらずマクロを実行できます。 –

+0

常に、コードの先頭に明示的にオプションを明示してください。使用しているワークブックを含む範囲オブジェクトを完全に参照します。また、ワークシート( "OK")でコンパイルエラーが発生しないことに驚いています。これを変数に設定していないので、UsedRange。 – QHarr

答えて

0

は次のように試してみてください:

Set StartCell = sht.Range("A1") 

それが動作するはずです。この方法では、ワークシートを範囲にも参照しています。あなたがそれをしないと、それはActiveSheet.Range("A1")がかかります。

+0

は、あなたのRESPONSいただきありがとうございますが、それはうまくいきませんでした、しかし、私のエラーがからに変更しました。 「実行時エラー」1004と表示されます。 –

+0

@ErikLøkås - エラーの前の行に 'sht.Select'を書いてください。 – Vityata

+1

ありがとうございました! –