2017-05-16 14 views
1

VBAで動的にサイズを変更したいテーブルがあります。 私の現在のコードはこれです:列J. の最初の0の前にサイズを変更する必要がありテーブルを最後の行に動的にサイズ変更しますか?

Sub resizedata() 
Dim ws As Worksheet 
Dim ob As ListObject 
Dim Lrow1 As Long 

Lrow1 = Sheets("Sheet4").Cells(Rows.Count, "J").End(xlUp).Row 
Set ws = ActiveWorkbook.Worksheets("Sheet4") 
Set ob = ws.ListObjects("Table28") 

ob.Resize ob.Range.Resize(Lrow1) 

End Sub 

私は、このしかし...

  1. 上にテーブルを一つの条件を追加したいと思います例えば

    +-------+--------+-------+ 
    |Date(I)|Hours(J)| Sal(K)| 
    +-------+--------+-------+ 
    | Aug | 150000 | 12356 | 
    | Sep | 82547 | 8755 | 
    | Oct | 92857 | 98765 | 
    | Nov | 10057 | 45321 | 
    | Dec |  0 |  0 | 
    | Jan |  0 |  0 | 
    +-------+--------+-------+ 
    

    上記の表のラス12月が列Jの最初の0の値であるため、11行目にする必要があります。

    誰かが既存のコードの修正を支援できますか?以下のような

+1

...私はこのロットを使用し、これは便利です願っています。代わりに、行がゼロに等しくないようになるまで、それらの行をループする必要があります。 – BruceWayne

答えて

2

何か:

With Sheets("Sheet4") 

    Lrow1 = .Cells(.Rows.Count, "J").End(xlUp).Row 
    Do While .Cells(Lrow1, "J").Value=0 
     Lrow1 = Lrow1 - 1 
    Loop 

End With 
+0

これは完全に機能します。ありがとうTim! – Darren

1

あなたはVBAでこれをやりたい特別な理由はありますか?あなたは単純に定義された名前を作成して、自己調整の範囲を作成するには、次を使用することができます。

OFFSET(Sheet!$A$1,0,0,COUNTA(Sheet!$A:$A),COUNTA(Sheet!$1:$1)) 
OFFSET(reference, rows, cols, [height], [width]) 

トップラインは、典型的な使用法を示し、2行目は、公式の構文です。

[式]タブの[名前]に移動し、[新規]をクリックし、名前を付けて参照先に貼り付けます。

1つの注意点がありますが、データに値がないところに0があるように見えます。それが本当の場合は、高さを判断するために別のテストを行う必要があります。

この方法の利点の1つは、常に計​​算されることです。データが変更された場合は、名前付き範囲のサイズ定義が必要に応じて調整されます。

私はあなたがそうVBAは「正しく」あなたの '0'の行にリサイズされて...最後の行であることを `lRow1`をチェックしている

+0

通常、これはピボットテーブルを使用しますが、この特定のデータセットについては、ピボットテーブルで実行できることがわかっていない計算フィールドを使用する必要があります(少なくとも私が知る限り)。基本的に私はテーブルを取って、可視化のためにグラフにエクスポートしています。動的なサイズ変更の効果は、ヌル値が存在する場所でスライサー項目が選択されていると、チャートがかなり醜いためです。情報をくれてありがとう。私はこれを間違いなく将来使用します。 – Darren

+0

ピボットテーブルで計算フィールドを使用しましたか?それらは幾分限られていますが、非常に便利です。計算フィールドを追加するには、ピボットテーブルを選択し、[ピボットテーブルツール]タブの[オプション]をクリックします。計算エリアの右側にあるフィールド、アイテム、およびセットをクリックします。計算フィールドをクリックして、楽しい時間を過ごしましょう! (直感的なaf、いいえ?) –

+0

はい、計算フィールドをかなり広範囲に使用しています。今度は計算されたフィールドの「限界」の1つに遭遇したと私は信じています。そのため、このインスタンスでは標準のテーブルを使いたいだけでした。 – Darren

関連する問題