アプリ版:「スタンプのみでお礼する」機能のリリースについて

お久しぶりでございます。
自己流でVBAを記述したんですが、うまく動作が確認できません。
ご指摘いただけると助かります。

現状
accessデータベースより、エクセルに条件抽出したデータでテーブルを作りました。
現在VBAコードにて、テーブルの更新があった際
テーブルの行数に応じて、別シートの印刷範囲を設定したいと考えているのですがうまくいきません。

1つのページに、1つの会社情報が記入できる書式があり
sheet"参照データ"から、会社情報をsheet"会社情報"・sheet"通知書"の書式の中の該当する欄にデータを飛ばしています。


記述場所は、shhet"参照データ”にしております。
Private Sub Worksheet_TableUpdate(ByVal Target As TableObject)
Dim sh As Worksheet
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim IH As Long

Set sh = Worksheet("参照データ")
Set sh1 = Worksheet("会社情報")
Set sh2 = Worksheet("通知書")

IH = Application.WorksheetFunction.CountA(Range("B2, .end(xlup)"))



sh1.PageSetup.PrintArea = "A1:AX" & IH * 62

sh2.PageSetup.PrintArea = "A1:AQ" & IH * 43


End Sub

質問者からの補足コメント

  • うれしい

    ありがとうございます。早速是正させていただきました。

    countAを使用した動機としては、テーブル内の会社の情報数=印刷するページ数
    なので
    シート”会社情報”では1ページ62行 X 会社情報数
    シート”通知書”では1ページ43行 X 会社情報数で
    印刷範囲を設定できるかと思ったのです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/04/13 17:17

A 回答 (1件)

こんにちは。



IH = Application.WorksheetFunction.CountA(Range("B2, .end(xlup)"))

これは、ありえませんね。
厳密に書けばこういうことになるとは思います。普通はアクティブシートで最後のセルを取得するので、With Sh などや、「.(コンマ)」は省略してしまいますが。

With Sh
  IH = WorksheetFunction.CountA(.Range("B2", .Cells(Rows.Count, 2).End(xlUp)))
End With

'--continue the next codes--
'------------------

ただ、CountA で取るというのは、大丈夫なのかなとは思います。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!