' [084.xls] ' [UserForm1] のコード Option Explicit Dim mycol As Single Private Sub ListBox1_Click() Dim mywidth 'リストボックスで選択した文章をセルに転記 [B6] = ListBox1.Value '今転記された文章の長さに合わせてセル幅を変更 [B6].EntireColumn.AutoFit '変更したセル幅を変数に格納 mywidth = [B5].EntireColumn.ColumnWidth '文字を格納したセルのセル幅を元に戻す [B6].EntireColumn.ColumnWidth = mycol '文字を表示するために必要なセル幅から文字を格納したセルの '元のセル幅をひいた数値で隣のセル幅を設定する [C6].EntireColumn.ColumnWidth = mywidth - mycol End Sub Private Sub UserForm_Initialize() '最初に文字を転記するセルのセル幅を変数に格納 mycol = [B6].ColumnWidth 'UserFormの表示位置を邪魔にならない場所に表示 Me.StartUpPosition = 3 Me.Caption = "選択した文章を B6セル に書き込みます" 'ワークシートに説明文を入れる [B9] = "列幅固定" [B9].Font.ColorIndex = 20 [B9].Interior.ColorIndex = 16 [C8] = "↑ C列の列幅をB6セルの入力文字数に合わせて変更" [C9] = "← B列の列幅は変化させません" [C10] = "C列の列幅に注目してリストボックスをクリック" [C8:C10].Font.ColorIndex = 3 '列幅の変化を確認しやすいようにセル背景色を設定 With [B6:C6] .Interior.ColorIndex = 1 .Font.ColorIndex = 6 End With 'リストボックスに表示させる文字を格納 With ListBox1 .AddItem ("A こんにちわ") .AddItem ("B その後如何ですか") .AddItem ("C 今日は良いお天気ですね") .AddItem ("D 私もご一緒させていただきます") .AddItem ("E 今度の日曜日に遊びにいきませんか?") .AddItem ("F 海もいいですが、野山のハイキングも楽しくていいですよ") .Selected(0) = True End With End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'ワークシートを元の状態に全て戻す With [B6:C10] .EntireColumn.ColumnWidth = mycol .Interior.ColorIndex = xlNone .Font.ColorIndex = 0 .ClearContents End With End Sub ' [Module1] のコード '★★☆ 文字数に合わせてセル幅を変更する ☆★★ Option Explicit Sub start() UserForm1.Show End Sub Sub start_A() Sheets("作業シート").Visible = -1 Sheets("Title").Visible = 2 End Sub Sub start_B() Sheets("Title").Visible = -1 Sheets("作業シート").Visible = 2 End Sub