1

別のスプレッドシートからの情報が入力されたデフォルトの表サイズとレイアウトのスプレッドシートがあります。このテーブルの列数は常に同じですが、行のエントリ数は異なる場合があります。テーブルからすべてのデータを選択し、空の行をコピーせずに別のシートに貼り付けたいです。

私の最初の試みには、次のコードが含まれていました。

Set rightcell = Range("B9").End(x1Right)
Set bottomcell = Range(rightcell).End(x1Down)

右下隅がどうあるべきかを定義するには、次のようにテーブル全体を参照できるようにします。

Range("B9", bottomcell).Select

またはコピーまたは何でも。これを実行すると、「ユーザー定義またはオブジェクト定義のエラー」が発生し、理由がわかりません。より大きなサブルーチンの一部としてコードを入力し、変数を範囲とバリアントの両方として定義して、これを機能させようとしました。インターネットで解決策を探すのにかなりの時間を費やしましたが、これまでのところ、私が見つけた情報は私の問題に明確に関連しておらず、同様の解決策はどれも機能しません.

これに適切なコーディングが何であるかを知っている人はいますか? 大学でのプロジェクト中に同じ問題に遭遇したことを覚えていますが、私の人生では、解決策を思い出せません。それはかなりイライラします。

また、私があまりにも漠然としている場合や、タスクについてさらに明確にする必要がある場合は、遠慮なく質問してください。助けてくれてありがとう!

編集:私が省略した重要な注意は、データを抽出したいテーブルが、私が操作しようとしていない他の複数のテーブルを含むページの真ん中にあるということです。

4

2 に答える 2

0

これは私が使用するものです

Public Function last_row() As Long
    Dim i As Integer
    Dim l_row As Long
    'my sheet has 35 columns change this number to fit your
    For i = 1 To 35
        If Sheet1.Cells(Rows.Count, i).End(xlUp).Row > l_row Then
            l_row = Sheet1.Cells(Rows.Count, i).End(xlUp).Row
        End If
    Next i
    last_row = l_row
End Function

次に使用

Dim l_row As Long
l_row = last_row
'Again since you know the last column change 35 here to your value 
'or use the String i.e. "AI"
Range("B9", Cells(l_row,35)).Select

これは、すべての列を調べて、データを含む最後の行を決定します

于 2013-10-03T19:57:57.527 に答える