チャンスたかぼーのDIY関連ブログ
Amebaでブログを始めよう!
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>

Excel VBA 「列幅をテーブルに記録」「テーブルの列幅設定値を用いて列幅を変更する」(利用

Excel VBA 「列幅をテーブルに記録」「テーブルの列幅設定値を用いて列幅を変更する」(利用方法)

 

・利用方法
手順1
シート「データ」のテーブルに列を追加したい場合、追加する前に、テーブルの列数(列記号)を確認し、
シート「データ列幅」のテーブル「列幅」(列記号)の範囲にあるか確認する。
シート「データ列幅」のテーブル「列幅」(列記号)の範囲にない場合は、テーブル「列幅」(列番号)の連番を追加し、
列番号を列記号に変換する関数式「=SUBSTITUTE(ADDRESS(1,A5,4),1,"")」テーブル「列幅」(列記号)のセルに
入れて、列記号に該当する列記号を求める。この列記号が、シート「データ」のテーブルの列記号が含まれるように
する。
 
手順2
シート「データ列幅」のボタン「シート「データ」の列幅を取得しテーブル「列幅」の列幅取得列に記入する」を押し、
テーブル「列幅」(列幅取得)に取得した列幅が表示されることを確認する。
 
手順3
テーブル「列幅」(列幅取得)の値をテーブル「列幅」(列幅設定値)に値を貼り付けする。
そして、テーブル「列幅」(列幅設定値)にこれからシート「データ」に追加する列記号の
行が空白になるように、以降の行のデータを1行下にずらす。
 
手順4
シート「データ」のテーブルに目的のカラムを追加し、列幅を調整する。
手順3の空白にしたセルに調整した列幅を記入する。
 
手順5
シート「データ列幅」のボタン「テーブル「列幅」の列幅設定値を用いてシート「データ」の列幅を変更する」
を押して、シート「データ」の列幅が調整されたことを確認する。(手順4でテーブルに列を追加した時に
列幅が勝手変更されたのが、修正されたことを確認する。)
 
end

Excel VBA 「列幅をテーブルに記録」「テーブルの列幅設定値を用いて列幅を変更する」

Excel VBA 「列幅をテーブルに記録」「テーブルの列幅設定値を用いて列幅を変更する」

 

Exclのテーブルを利用していて、テーブルに列(カラム)を挿入するとすると、列(カラム)を挿入した右側の列幅が勝手に変更されてしまう。

いろいろ調べたが、勝手に変更されないような設定はできなさそうなので、VBAで何とかならないかやってみた。

 

シート「データ」にテーブル「データ」がある。

新たにシート「データ列幅」を追加し、カラム(A:列番号、B:列記号、C:列幅取得、D:列幅設定値)としたテーブル「列幅」を4行目から作成する。

 

列番号 列記号 列幅取得 列幅設定値
1 A 3.00 3
2 B 3.29 3.22
3 C 7.43 7.4
4 D 9.86 9.81
5 E 10.29 10.34
6 F 4.57 4.62
7 G 4.71 4.68
8 H 11.43 11.43
9 I 11.43 11.43
10 J 11.43 11.43

 

・列記号は列番号ごとにに関数式を利用して取得する。

 =SUBSTITUTE(ADDRESS(1,A5,4),1,"")

 

テーブル「列幅」の列幅取得に取得したシートデータの列幅を記入する

Sub テーブル列幅の列幅取得に取得したシートデータの列幅を記入する()
Dim coldata As Variant
Dim i As Integer
Dim dmr As Integer
coldata = ActiveSheet.ListObjects("列幅").DataBodyRange
 
'次元要素数を入れる
dmr = UBound(coldata, 1)
'Debug.Print dmr
 
'列幅を調べ配列に格納する
For i = 1 To dmr
    coldata(i, 3) = Sheets("データ").Columns(i).ColumnWidth
'    Debug.Print coldata(i, 1), coldata(i, 2), coldata(i, 3), coldata(i, 4)   
Next i
 
'テーブル列幅(A5からテーブル「列幅」の末尾まで)に配列データを書き込む
'テーブル「列幅」が4行目からなので+4する
Range("A5:" & "D" & dmr + 4) = coldata
End Sub
 
テーブル「列幅」の設定値を用いてシート「データ」の列幅を変更する
Sub テーブル列幅の設定値を用いてシートデータの列幅を変更する()
Dim coldata As Variant
Dim i As Integer
Dim dmr As Integer
coldata = ActiveSheet.ListObjects("列幅").DataBodyRange

'次元要素数を入れる
dmr = UBound(coldata, 1)

'シートデータの列幅を設定する
For i = 1 To dmr
    Sheets("データ").Columns(i).ColumnWidth = coldata(i, 4)
Next i
End Sub
 
・ボタン(フォームコントロール)をシート「列幅」に追加し、それぞれのモジュールがボタン操作で起動するようにする
 

アジサイの剪定

チャンスたかぼーのDIY関連ブログ


ネットで剪定方法を調べてやってみた。

剪定後の花(正しくは花じゃ無いと思ったが)を

穴を塞いだプランターに水を張って、花瓶の代わり

に入れてみた。


剪定が正しくできているか、結果は来年のお楽しみ(^▽^;)


1 | 2 | 3 | 4 | 5 | 最初次のページへ >>