[[20121010083952]] 『autofitについて』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『autofitについて』(初心者)
 エクセルのAUTOFITについて、教えてください。
 入力表シートに入れたデータを別シートに貼り付けした時に
 1行以上のデータは折り返しにしているのですが、自動で
 行幅を変更するVBAを入れたいと思っています。
 1行の高さを15として余裕幅を1/2行とするにはどうすれば
 いいでしょうか?
 (1行の場合=15+7.5、2行の場合=30+15・・・)
 お助けください。よろしくお願いします。

 ただし、データがA列にある行もあれば、B列にある行、
 C列にある行・・・とE列にある行まであります。
 そのため、A列でAUTOFITをするとE列で3行
 ある行が上手く調整できないものとなっています。

 難しい質問かもしれませんが、よろしくお願いします。

内容的に無理なのでしょうか?

 >ただし、データがA列にある行もあれば、B列にある行、
 >C列にある行・・・とE列にある行まであります。
 >そのため、A列でAUTOFITをするとE列で3行
 >ある行が上手く調整できないものとなっています。

 ちょっとよく分からないのですけど、「行高」の調整ですよね?

 なのに、なぜA「列」でAUTOFITなんですか?

 「目的とする"行"でAUTOFITする」って云うのなら分かるんですけど。

 (半平太) 2012/10/10 13:25

 早速書き込みいただきありがとうございました。
 そうです。行高の調整です。
 ですが、以下のVBAを試しにしたところダメでした。

 Cells.EntireRow.AutoFit
 Dim myRow As Long
 ' A列にデータがあるとして動いている。
 ' A列にデータがない場合は Rows.Count, 1 の 1 を書き換える。
 ' 1=Aです。B列なら2、C列なら3。
 For myRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
 With Cells(myRow, 1)
 ' 高さを15足す
 .RowHeight = .RowHeight + 15
 End With
 Next myRow
 End Sub

 コピー先のシートがA列から始まっているデータもあれば、B列
 から始まっているデータもあり、そういうのも同じVBAで出来ない
 かなと思ったのですが、上記の式がおかしいのでしょうか。
 初歩的な質問で申し訳ありません。よろしくお願いします。


 こんなんでいけると思います。

 Sub RowFitting()
     Dim myCol As Long
     Dim myRow As Long
     Dim rowMax As Long

     rowMax = 1

     For myCol = 1 To 5
         If rowMax < Cells(Rows.Count, myCol).End(xlUp).Row Then
             rowMax = Cells(Rows.Count, myCol).End(xlUp).Row
         End If
     Next myCol

     Rows(1).Resize(rowMax).AutoFit

     For myRow = 1 To rowMax
        With Rows(myRow)
        ' 高さを15足す
         .RowHeight = .RowHeight + 15
        End With
     Next myRow
 End Sub

 (半平太) 2012/10/10 20:45

 半平太様、ありがとうございます!
 早速試しましたが、1行のものも2行のものも同じ行高さになって
 しまいました。(行高さ=28.5)
 1行につき行高さ18とすることは出来ないでしょうか?
 よろしくお願いします。

 >早速試しましたが、1行のものも2行のものも同じ行高さになって

 私が勘違いしているのかも知れませんが、行高は行全体に適用されます。

 A列1行目の行高が2行分あり、B列1行目が5行分ある、などと云う状況は作れません。

 そんな質問であるハズはないと思いながら、そう受け取らざるを得ません。

 私の勘違いならご指摘ください。

 (半平太) 2012/10/11 09:10

 半平太様、早速ご回答いただき、感謝です。
 同じ行で列によって行高を変える事ではなく、データが入って
 いる列が異なっています。
 例えば・・・
 1行目:A列にデータ(1行)
 2行目:B列にデータ(3行)
 3行目:C列にデータ(5行)
 という感じになっています。

 こういう時に1行目は1行分の行高、2行目は2行分の行高
 3行目は5行分の行高・・・という風にできるでしょうか。

 分かりくい書き方だったかもしれません。
 申し訳ありませんが、よろしくお願いします。

 > こういう時に1行目は1行分の行高、2行目は2行分の行高
 > 3行目は5行分の行高・・・という風にできるでしょうか。

 それでしたら、私の環境では上掲コードでそうなりましたけど、どうなっているんでしょうかね?

 > 1行以上のデータは折り返しにしている
 この書式設定は今も活きていますか?

 活きているとしたら、私はちょっと分かりません。他の回答者のレスをお待ちください。

 (半平太) 2012/10/11 11:02

お久しぶりです。スレ主です。
 あの後ばたばたしてまして書き込みが遅くなり申し訳ありません。
 結合セルが一部含まれているのですが、それが原因でしょうか?

 >結合セルが一部含まれているのですが、それが原因でしょうか

 その場合は、Autofitはワークしない様です。
 こちらを参考にして、トライしてみてください。(初心者のレベルだとキツイかも?)
  ↓
 結合セルの文字列をピッタリ表示される方法
http://excelfactory.net/excelboard/excelvba/excel.cgi
 (過去ログ15に入っていますので、キーワード検索してください。)

 ※まっさらな状態を作ってからデータ入力すると自動アジャストされる、
  と云うエクセルの不思議な振る舞いを上手く利用しながら解決するものです。

 結合だけでなく、他の書式にも波及する話なので(設定されていればですけど)、
 私はこれ以上関わる気が起きませんので、申し訳ありませんが、これで私の最後のレスとします。

 (半平太) 2012/11/23 13:03

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.