[[20230309232204]] 『列を削除(消滅)させたいです。』(サンドラブロッコリー) ページの最後に飛ぶ

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

 

『列を削除(消滅)させたいです。』(サンドラブロッコリー)

こんにちわ。

11行目を右端から最終列を取得
最終行の右隣の列以降は
セルの色や罫線のクリアなどではなく列そのものを全て削除
というのは難しいでしょうか?

ネットの頼れる友達に聞いてもなかなかうまくいきません。

Sub DeleteColumns()

    Dim LastColumn As Integer
    LastColumn = ActiveSheet.Cells(11, Columns.Count).End(xlToLeft).Column ' 11行目から最終列の列番号を取得

    Columns(LastColumn + 1 & ":" & Columns.Count).Delete ' 最終行の右隣の列以降を全て削除
End Sub

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


そのコードは列をすべて削除していると思います。
あなたのされたいことは、たぶん、
「特定の列以降、すべての列を非表示にする」ということだと思います。
マクロ記録を採れば、参考となるコードが得られます。

(abc) 2023/03/10(金) 06:11:38


違ってたらごめんなさいですが、列を表現するのに↓だとまずいので
 Columns(LastColumn + 1 & ":" & Columns.Count)

例えば↓のようにすればよいということだったりしませんか?

    Sub DeleteColumns_改()
        Dim bufRNG As Range

        With ActiveSheet
            Set bufRNG = .Cells(11, .Columns.Count).End(xlToLeft).Offset(, 1) ' 11行目の最終列1列左の【セル】を取得
            .Range(bufRNG, .Cells(11, .Columns.Count)).EntireColumn.Delete
        End With
    End Sub

(もこな2) 2023/03/10(金) 07:33:55


あれま。エラーになっていたんですか。失礼。
(abc) 2023/03/10(金) 07:38:45

おそらく、トピ主の発想としては↓のように、行は【行番号】を組み合わせた【文字列】で操作できるから
 Rows("2:5").Select

↓のように列も【列番号】を組み合わせた【文字列】で操作可能と考えたとおもいますが、

 Columns("1:3").Select

実際には↓のように【列文字】を組み合わせた【文字列】でないと操作できません。

 Columns("A:C").Select

なので、「Rangeオブジェクト.EntireColumn」で列全体を指定する方法を回答したわけですが、Columnsプロパティに拘りたいということならば↓のようになるとおもいます。

    Sub 別案()
        Dim 列文字 As String

        列文字 = Split(ActiveSheet.Cells(11, Columns.Count).End(xlToLeft).Offset(, 1).Address, "$")(1)
        ActiveSheet.Columns(列文字 & ":XDF").Delete
    End Sub

    ※最終列は、必要に応じ調整してください。
   (個人的には最大列である必要はないと感じます)

(もこな2) 2023/03/10(金) 12:39:24


コメント返信:

[ 一覧(最新更新順) ]


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