こんにちは。助けてください。笑
以下、状況のテンプレートがございまして、統合セル箇所を自動調整するマクロコードを追加したいと考えています。ネットでざっと調べたのですが、ピンポイントで当てはまるコードが見つからず、なかなか複雑でして・・
条件:
・シートAとシートBがあり、シートAの後にシートBが連続するページとしてPDFが1ファイル作成される
・シートA、シートB双方に自動調整したいセルがある(シートAは統合セル、シートBは非統合セル)
・シートA、シートBの自動調整するセルは、入力用のシートからデータを引っ張ってきている
・シートAの統合セルは、列・行共に複数セルを統合している
上記内容なのですが、シートA、シートBのそれぞれ自動調整が必要な複数の統合セル・非統合セルを自動調整するVBAコードをご教示頂けましたらと思います。
宜しくお願い致します。
うっしー
2019.10.22 05:37:03
418
![]()
統合セルに対してはAutofitが使えないので、なんらかの工夫が必要ですね。また回答させていただきます。
|
コメントするには ログイン していただく必要があります。
回答が遅くなり申し訳ございません。
ます、シートBについてですが、こちらは非統合セルですので単純にAutoFitメソッドを利用すれば良いかと思います。
例えば、B2セルの列のサイズを自動調整したい場合は次のように行います。
Range("B2").Columns.AutoFit
行のサイズを自動調整したい場合は、Columns
ではなくRows
とします。
次に問題のシートAについてですが、統合セルにAutoFitを使っても期待通りにサイズが調整されないため、工夫が必要となります。
一つのやり方は、セルに含まれる文字数から必要な幅を計算して、それを結合する列数(または行数)で割った値を、それぞれの列(または行)の幅として指定する方法です。ただ、同じ文字数でも半角と全角文字では文字幅が違いますし、プロポーショナルフォント(MS Pゴシック等)の場合は文字ごとに幅が違うため、正確な幅を抽出するのは大変です。
もう一つのやり方は、非統合セルを一時的に利用する方法です。
例えば、B2とC2セルが統合したセルの列の幅を自動調整したい場合は、
とやれば良いかと思います。「使用していない非統合セル」には、対象の統合セルと同じ列のものを選ぶと、他の列への影響を減らすことができて良いと思います。
上記をコードで表現すると次のようになります。
Range("B100").Formula = "=" & Range("B2").Address
Range("B100").Columns.AutoFit
Dim w As Double: w = Range("B100").ColumnWidth
Range("B2").ColumnWidth = w / 2
Range("C2").ColumnWidth = w / 2
Range("B100").Delete
いかがでしょうか?
shirohonoka
2020.03.02 18:03:45
(2020.03.02 18:07:25 更新)
コメントするには ログイン していただく必要があります。