
背景: データベースからデータを取得して製品ラベルを作成するシートがあります (インデックス一致検索式を使用)。シートには、空白行をフィルターして残りの行を自動調整するマクロを記録しました。(VBA にあまり詳しくないので、無知な点はご容赦ください)
ワークシート: データは 2 つの列 (B と C) と 25 行に入力されます。製品番号を入力すると、空白行をフィルターして残りの行を自動調整し、残りの各行の行の高さを測定し、行の高さの合計 (セル B2 が望ましい) を取得するという、これらのタスクをすべて実行するマクロを作成するための支援が必要です。(つまり、「行の高さ: 64」)
どのような助けでも大歓迎ですので、よろしくお願いします!
答え1
次のようなフィルタリングされたデータ:
次のようなコード:
Sub TotalHeight()
Dim HowTall As Long
Dim Kount As Long
HowTall = 0
Kount = 0
For i = 2 To 25
Set r = Cells(i, "A").EntireRow
If Not r.Hidden Then
HowTall = HowTall + r.RowHeight
Kount = Kount + 1
End If
Next i
MsgBox Kount & vbCrLf & HowTall
End Sub
表示されている行の数とそれらの行の合計の高さが表示されます。
注記:
高さの単位はポイント、各ポイントは0.013888889インチです(100% ズーム時) これは、ジャンボトロンをモニターとして使用していないことを前提としています。
答え2
高さ/数を変数で取得するには、モジュールに次のコードを入力するだけで、すばやく簡単に行えます。
Public Function getHeight(rng As Range) As Long
getHeight = rng.Height
End Function
Public Function getCount(rng As Range) As Long
getCount = rng.SpecialCells(xlCellTypeVisible).Rows.Count
End Function
次に、出力したいセルに=getCount(B4:B25)&" "&getHeight(B2:B25)/96
数と高さを入力するだけです...ただし、ppi は設定、解像度、モニターのサイズによって変わることに注意してください (そのため、実際の ppi を取得して を変更する必要があるかもしれません/96
が、それを実行する簡単な方法はたくさんあります...ここを参照するか、Google を使用してください)。
フィルターと自動高さの設定については、「マクロの記録」だけで十分です。次に、フィルターを可変的に設定する必要があります。可変フィルターを取得するには、フィルターを変更しながら記録し、フィルター値をRange("A1").Value
(A1 をフィルターとして使用したいセルに変更します)に置き換えます。
それでも問題が解決しない場合は、StackOverflow で質問してください (ただし、すでに持っているコードを見せないと怒られる可能性があります) :P