![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
選択した列が AutoFit していたら列幅を8に。
選択した列が AutoFit していなかったら AutoFit 実行。
というコードがうまくいきません。
ほんとのド素人で何もわかっていませんのでよろしくお願いします。
Private Sub CommandButton3_Click()
ActiveCell.EntireColumn.Select
With Selection
If .EntireColumn.AutoFit = True Then
Selection.ColumnWidth = 8
Else
.EntireColumn.AutoFit = True
End If
End With
End Sub
No.3ベストアンサー
- 回答日時:
No.1の者です。
最初に、幅を数字として取得し変数へ保管、その後、AutoFitを実行。
変数と、AutoFit後の数字を比較。
同じなら、AutoFitされていた状態。 → 幅を8へ
違うなら、AutoFitを実行
あと、
最初の状態が、AutoFit → 8
最初の状態が、8 → AutoFit
最初の状態が、上記以外 → ???
Dim myColmWidth As Double
With ActiveCell
myColmWidth = .ColumnWidth
.EntireColumn.AutoFit
If myColmWidth = .ColumnWidth Then
.ColumnWidth = 8
Else
'8でもAutoFitでもない場合は、どうする?
.ColumnWidth = myColmWidth '元に戻しています。
End If
End With
ご回答ありがとうございます。
>最初に、幅を数字として取得し変数へ保管、その後、AutoFitを実行。
変数と、AutoFit後の数字を比較。
同じなら、AutoFitされていた状態。 → 幅を8へ
違うなら、AutoFitを実行
:
この発想が 天才的!! と思いましたよ。^^
下記のようにさせていただいたところ上手くいきました~。\(^^)/
本当にありがとうございました。m(_ _)m
Private Sub CommandButton3_Click()
Dim myColmWidth As Double
With ActiveCell
myColmWidth = .ColumnWidth
.EntireColumn.AutoFit
If myColmWidth = .ColumnWidth Then
.ColumnWidth = 8
End If
End With
End Sub
No.2
- 回答日時:
No.1の者です。
幅が8ならAutoFit、それ以外なら8にしています。
With ActiveCell
If .ColumnWidth = 8 Then
.EntireColumn.AutoFit
Else
.ColumnWidth = 8
End If
End With
No.1
- 回答日時:
こんばんは。
たぶんですが、EntireColumn.AutoFitって、実行する事はできますが、
今の状態がフィットしているかは、分からないかと。
複数列の処理している様ですが、全ての列をAutoFit又は、8にするという事
でしょうか? 選択した範囲が全て同じになっている?
何回か実施すると、8又は、AutoFitのどちらかになると思うのですが、
8だったらAutoFit、8以外だったら8にするとかは、ダメでしょうか?
ご回答ありがとうございます。
>今の状態がフィットしているかは、分からないかと。
:
そうなんですか。
If .EntireColumn.AutoFit = True Then
Selection.ColumnWidth = 8
までは一応実行されるようなんですが、よくわかりません。
>全ての列をAutoFit又は、8にするという事
でしょうか?
:
いえ、複数列にデータを入れていますが、そのうちの一列だけを選択してコードを実行させたいです。
>8だったらAutoFit、8以外だったら8にするとかは、ダメでしょうか?
:
なるほど。
ただ幅を変える可能性もあるので、できればAutoFitの有無で分岐させられればと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの列が左右逆に・・・・
-
エクセルで最高値、最低値の日...
-
エクセル2007で1列おきに...
-
エクセル・違う幅の列や行を複...
-
列の並べ替え
-
エクセルの列を増やせないか
-
あいうえお順に本のタイトルを...
-
powerpoint2000で表の列幅・行...
-
並び替え
-
エクセルで複数のセルをランダ...
-
ワードで表を作った時
-
エクセルでの並べ替え
-
エクセル範囲指定に列見出しを...
-
パソコンで購入したデーターが...
-
VBAでエクセルシートを更新...
-
「24日の0時」って・・・
-
日付の大小の表現
-
エクセルのチェックボックスを...
-
エクセルで数字から名前に変...
-
excelで、セル内に文字が入力さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最高値、最低値の日...
-
エクセルの列が左右逆に・・・・
-
エクセル・違う幅の列や行を複...
-
エクセル2007で1列おきに...
-
【マクロ】複数シートのデータ...
-
エクセルで列をアルファベット...
-
Excel ある行と列が交わったと...
-
エクセルで競艇に勝つ!
-
エクセルで複数のセルをランダ...
-
年齢ごとの商品の販売個数を集...
-
エクセル範囲指定に列見出しを...
-
アクセス2010クロス集計クエリ
-
ワードで表を作った時
-
エクセルで列の行の重複の検索...
-
Excelで縦軸と横軸の両方で昇順...
-
Excelで作業時間の集計
-
Excelの右上をA1にできる?
-
googleスプレッドシートについ...
-
VBA初心者です。集計のやり方を...
-
エクセルの列を増やせないか
おすすめ情報
If .EntireColumn.AutoFit = True Then
Selection.ColumnWidth = 8
は実行されるのですが、
Else
.EntireColumn.AutoFit = True
が実行されません。
ステップインで検証すると、
.EntireColumn.AutoFit = True
ではない(Selection.ColumnWidth = 8 です)のに、
Else に移行せず、
Selection.ColumnWidth = 8
を実行してしまいます。