Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5180 / 13644 ツリー ←次へ | 前へ→

【51991】空白列の削除 T-K 07/10/15(月) 1:21 質問[未読]
【51999】Re:空白列の削除 Lindy 07/10/15(月) 13:56 発言[未読]
【52005】Re:空白列の削除 T-K 07/10/16(火) 0:04 お礼[未読]
【52017】Re:空白列の削除 Lindy 07/10/16(火) 14:40 発言[未読]
【52031】Re:空白列の削除 T-K 07/10/17(水) 1:05 お礼[未読]
【52002】Re:空白列の削除 Jaka 07/10/15(月) 14:42 発言[未読]
【52032】Re:空白列の削除 T-K 07/10/17(水) 1:11 お礼[未読]

【51991】空白列の削除
質問  T-K  - 07/10/15(月) 1:21 -

引用なし
パスワード
   AutoFilterで抽出した状態のデータがあります。空白列を削除したいです。

    列→
        1/1  1/2  1/3  1/4   1/5

行 データ   ***      ***  ***→1/5の所が空白の時があり範囲指定でき
                      ない 
↓ データ   ***  ***  ***  ***   ***→この列以降の列の削除
  データ   ***         ***   ***

データのある最終列から右の列を選択して削除したいのですがEnd(XlLeft)
等で選択したいのですが入力範囲が一定してません。CurrentRegionで選択しても
フィルター抽出したデータなのですべて選択してしまいます。もしこのような問題を
解決する手段が、あればおしえてくださいよろしくお願いいたします。
  

【51999】Re:空白列の削除
発言  Lindy  - 07/10/15(月) 13:56 -

引用なし
パスワード
   こんにちは
見えているセルと値が入っているセルの重なった部分の1つ右の列から最終列までとすると、こんな感じでどうでしょうか?

With ActiveSheet
 Set myR = Application.Intersect( _
       .Cells.SpecialCells(xlCellTypeVisible), _
       .Cells.SpecialCells(xlCellTypeConstants, 23))
 .Range(.Columns(myR.Column + myR.Columns.Count), .Columns("IV")).Select
End With

【52002】Re:空白列の削除
発言  Jaka  - 07/10/15(月) 14:42 -

引用なし
パスワード
   等幅フォントに直しました。(2回目、以下前回と全く同じ)

考え方だけですけど。

Set AutRag = Sheets("Sheet1").AutoFilter.Range
With AutRag.Offset(1).Resize(AutRag.Rows.Count - 1)
  .Select
  LastCol = .Columns(.Columns.Count).Column
  MsgBox "オートフィルタ範囲最後の列は、" & LastCol
  LastRow = .Rows(.Rows.Count).Row
  MsgBox "オートフィルタ範囲最後の行は、" & LastRow
  .SpecialCells(xlCellTypeVisible).Select
  For Each Rng In .SpecialCells(xlCellTypeVisible).Rows
    Rng.Columns(.Columns.Count).Offset(, 1).Select
    MsgBox Rng.Columns(.Columns.Count).Offset(, 1).Address & _
        "この位置から左側を調べる...。"
  Next
End With

【52005】Re:空白列の削除
お礼  T-K  - 07/10/16(火) 0:04 -

引用なし
パスワード
   ▼Lindy さん:
>こんにちは
>見えているセルと値が入っているセルの重なった部分の1つ右の列から最終列までとすると、こんな感じでどうでしょうか?
>
>With ActiveSheet
> Set myR = Application.Intersect( _
>       .Cells.SpecialCells(xlCellTypeVisible), _
>       .Cells.SpecialCells(xlCellTypeConstants, 23))
> .Range(.Columns(myR.Column + myR.Columns.Count), .Columns("IV")).Select
>End With
早速の返事感謝いたします。定数の入力された部分とすべての可視セルの重なった
部分の選択するコードを記入していただきましたが、私の説明部分が悪くて大変申し訳ありませんが
一番上の行は日にちが隙間無く表示されているため期待どうりの結果がえられませんでした。 T-k

【52017】Re:空白列の削除
発言  Lindy  - 07/10/16(火) 14:40 -

引用なし
パスワード
   ▼T-K さん:
>一番上の行は日にちが隙間無く表示されているため

2行目から最終行で判断するようにしたら良いと思います。

With ActiveSheet
 With .Rows("2:" & .Range("A" & .Rows.Count).End(xlUp).Row)
  Set myR = Application.Intersect( _
       .SpecialCells(xlCellTypeVisible), _
       .SpecialCells(xlCellTypeConstants, 23))
 End With
 .Range(.Columns(myR.Column + myR.Columns.Count), .Columns("IV")).Select
End With

【52031】Re:空白列の削除
お礼  T-K  - 07/10/17(水) 1:05 -

引用なし
パスワード
   ▼Lindy さん:
>▼T-K さん:
>>一番上の行は日にちが隙間無く表示されているため
>
>2行目から最終行で判断するようにしたら良いと思います。
>
>With ActiveSheet
> With .Rows("2:" & .Range("A" & .Rows.Count).End(xlUp).Row)
>  Set myR = Application.Intersect( _
>       .SpecialCells(xlCellTypeVisible), _
>       .SpecialCells(xlCellTypeConstants, 23))
> End With
> .Range(.Columns(myR.Column + myR.Columns.Count), .Columns("IV")).Select
>End With


早速の返信ありがとうございます。早速使用してみましたが、残念ながら
データの途中の列までしか選択されませんでした。
いろいろためしたのですが、やはり同じ結果でした。数字が入力されていないセルがある
のでそのせいなのか?すいませんが考えてもわかりません。
後教えてほしいのは、
xlCellTypeConstantsの23という数字はなにを意味している値でしょうか?
大変きになります?? T-k

【52032】Re:空白列の削除
お礼  T-K  - 07/10/17(水) 1:11 -

引用なし
パスワード
   ▼Jaka さん:
>等幅フォントに直しました。(2回目、以下前回と全く同じ)
>
>考え方だけですけど。
>
>Set AutRag = Sheets("Sheet1").AutoFilter.Range
>With AutRag.Offset(1).Resize(AutRag.Rows.Count - 1)
>  .Select
>  LastCol = .Columns(.Columns.Count).Column
>  MsgBox "オートフィルタ範囲最後の列は、" & LastCol
>  LastRow = .Rows(.Rows.Count).Row
>  MsgBox "オートフィルタ範囲最後の行は、" & LastRow
>  .SpecialCells(xlCellTypeVisible).Select
>  For Each Rng In .SpecialCells(xlCellTypeVisible).Rows
>    Rng.Columns(.Columns.Count).Offset(, 1).Select
>    MsgBox Rng.Columns(.Columns.Count).Offset(, 1).Address & _
>        "この位置から左側を調べる...。"
>  Next
>End With
返信ありがとうございます今回Lindyさんの方が、自分の求めているものに
近いようななのでそちらでがんばってみます。
未熟なわたしなので教えてもらう事ばかりですが又よろしくご教授ください
T-k

5180 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free