[[20251106095235]] 『AutoFit の使い方について』(栗栄太) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『AutoFit の使い方について』(栗栄太)

以下のプログラムを実行します。

 Private Sub CommandButton1_Click()
    Range("A1") = "AABB122A" & vbCrLf & "831" & vbCrLf & "1568"
    Cells.EntireColumn.AutoFit
 End Sub

実行すると表示が以下のようになるのですが

 "AABB12
 2A
 831
 1568"

以下のようにするにはどうすればいいのでしょうか?

 "AABB122A
 831
 1568"

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


あらかじめ、A列の幅を充分広げておけばよいのでは。

または、コードでA列の幅を充分広げておけば。
(通りがかり) 2025/11/06(木) 10:07:33


試しに、以下のようにするとこの部分の表示は期待通りになりましたが、
それ以外のセルの幅が大きくなり、どうしようもなくなりました。
最終的には A列だけではなく他の列にも表示するので、
表示する列が変更されたりと不定なのでそのあたりを考えると
このままでは使えないです。

    Range("A1") = "AABB122A" & vbCrLf & "831" & vbCrLf & "1568"
    Cells.ColumnWidth = 255
    Cells.EntireColumn.AutoFit
(栗栄太) 2025/11/06(木) 10:13:00

 行いたいことはボタンを押すとシート全体の中で文字が入力されているセルのオートフィットを行いたいということだろうか?

 例だけであればそれこそA列の幅だけ広げればいいことなので。
(ねむねむ) 2025/11/06(木) 10:20:17

 Private Sub CommandButton1_Click()
    Columns("A").ColumnWidth = 100  '仮数値
    Range("A1").WrapText = True
    Range("A1") = "AABB122A" & vbCrLf & "831" & vbCrLf & "1568"
    Columns("A").AutoFit
 End Sub
(xyz) 2025/11/06(木) 10:38:12

 セル内改行はvbLfでしたね。
(xyz) 2025/11/06(木) 10:47:11

皆さんの意見を参考にして、以下のようにしました。
255以上は設定できなかったので255にしました。
間違っているところとか、良くした方がいい方法があれば
教えてください。

 Private Sub CommandButton2_Click()

    Dim irow As Long, icol As Long
    Dim varval As Variant

    Cells.ColumnWidth = 5
    Range("A1") = "AABB122A" & vbCrLf & "831" & vbCrLf & "1568"
    Range("B8") = "AABB123A" & vbCrLf & "531" & vbCrLf & "1561"
    Range("D10") = "AABB124A" & vbCrLf & "731" & vbCrLf & "1468"

    For icol = 1 To UsedRange.Column + UsedRange.Columns.Count - 1
        For irow = 1 To UsedRange.Row + UsedRange.Rows.Count - 1
            If Cells(irow, icol) <> "" Then
                varval = Split(Cells(irow, icol).Address, "$")
                Range(varval(1) & ":" & varval(1)).ColumnWidth = 255
                Range(varval(1) & ":" & varval(1)).EntireColumn.AutoFit
                Exit For
            End If
        Next
    Next
 End Sub
(栗栄太) 2025/11/06(木) 10:49:21

 汎用的に使うなら、標準モジュールに
 Sub AutofitColumns(sh As Worksheet)
     Dim col As Range
     For Each col In sh.UsedRange.Columns
         If Application.CountA(col) > 0 Then
             col.ColumnWidth = 255
             col.AutoFit
         End If
     Next
 End Sub
 などとしておきます。

 シートモジュールからは、
 Private Sub CommandButton1_Click()
     Cells.ColumnWidth = 5
     Range("A1") = "AABB122A" & vbLf & "831" & vbLf & "1568"
     Range("B8") = "AABB123A" & vbLf & "531" & vbLf & "1561"
     Range("D10") = "AABB124A" & vbLf & "731" & vbLf & "1468"

     Call AutofitColumns(Me)
 End Sub
 などと使います。

(xyz) 2025/11/06(木) 13:29:47


よりよいのかはわかりませんが、ループしなくても書けそう?

Private Sub CommandButton2_Click()

    Me.Cells.ColumnWidth = 5
    On Error Resume Next
    With Me.UsedRange.SpecialCells(xlCellTypeConstants)
        .ColumnWidth = 255
        .EntireColumn.AutoFit
    End With
    On Error GoTo 0
End Sub
(まっつわん) 2025/11/07(金) 10:35:20

コメント返信:

[ 一覧(最新更新順) ]


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