Excel VBA質問箱 IV

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

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


4845 / 13646 ツリー ←次へ | 前へ→

【54099】列の削除について 名無し 08/2/24(日) 15:32 質問[未読]
【54100】Re:列の削除について かみちゃん 08/2/24(日) 15:42 発言[未読]
【54101】Re:列の削除について 名無し 08/2/24(日) 15:50 発言[未読]
【54103】Re:列の削除について かみちゃん 08/2/24(日) 16:04 発言[未読]
【54105】Re:列の削除について 名無し 08/2/24(日) 17:44 発言[未読]
【54106】Re:列の削除について かみちゃん 08/2/24(日) 17:55 発言[未読]
【54107】Re:列の削除について 名無し 08/2/24(日) 19:00 発言[未読]
【54108】Re:列の削除について かみちゃん 08/2/24(日) 19:26 発言[未読]
【54114】Re:列の削除について 名無し 08/2/24(日) 23:22 お礼[未読]

【54099】列の削除について
質問  名無し  - 08/2/24(日) 15:32 -

引用なし
パスワード
   複数の空白の列を探し出してその空白のすべての列を削除するにはどうすれば良いのか
誰か教えてください。

【54100】Re:列の削除について
発言  かみちゃん  - 08/2/24(日) 15:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>複数の空白の列を探し出してその空白のすべての列を削除する

空白は列全体ですか?特定の行ですか?
列削除自体は、マクロの記録で記録できますが、いかがですか?

【54101】Re:列の削除について
発言  名無し  - 08/2/24(日) 15:50 -

引用なし
パスワード
   ▼かみちゃん さん:
回答ありがとうございます。
列全体を削除したいです。
空白の列の場所は決まっていないので自動で空白の列を見つけて
その列全体を削除したいです。

【54103】Re:列の削除について
発言  かみちゃん  - 08/2/24(日) 16:04 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>列全体を削除したいです。

もう一度申し上げます。
「マクロの記録」で記録できますが、いかがですか?

>空白の列の場所は決まっていないので自動で空白の列を見つけて

何わもって、空白の列と判断するのかがわかりません。
一部のセルか、列全体が空白なのかどちらなのでしょうか?

【54105】Re:列の削除について
発言  名無し  - 08/2/24(日) 17:44 -

引用なし
パスワード
   ▼かみちゃん さん

ちんぷんかんぷんで申し訳ありません
>「マクロの記録」で記録できますが、いかがですか?

マクロの記録だと列の場所がD列だったりY列だったりと
さまざまなので空白ではない列が削除される時がありまして
あまり良くないんです。

>何わもって、空白の列と判断するのかがわかりません。
>一部のセルか、列全体が空白なのかどちらなのでしょうか?
 
列全体です。

【54106】Re:列の削除について
発言  かみちゃん  - 08/2/24(日) 17:55 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>「マクロの記録」で記録できますが、いかがですか?
>
>マクロの記録だと列の場所がD列だったりY列だったりと
>さまざまなので空白ではない列が削除される時がありまして
>あまり良くないんです。

あまり良くなくても、できますよね。
そのコードを修正すればいいわけですが、わからないならば、そのコードを提示
して、どこを直せばいいか聞くようにしてはいかがでしょうか?ということです。
ここは、質問掲示板ですから・・・

>>何わもって、空白の列と判断するのかがわかりません。
>>一部のセルか、列全体が空白なのかどちらなのでしょうか?
> 
> 列全体です。

この部分は、いろいろあるかと思いますが、以下のような感じで判断できると思います。
Sub Sample()
 Dim FR As Range
 
 On Error Resume Next
 Set FR = Columns("A").Cells.Find("*", , xlValues, xlPart)
 On Error GoTo 0
 If FR Is Nothing Then
  MsgBox "空白の列です"
 Else
  MsgBox "空白の列ではありません"
 End If
End Sub

【54107】Re:列の削除について
発言  名無し  - 08/2/24(日) 19:00 -

引用なし
パスワード
   ▼かみちゃん さん:

>「マクロの記録」で記録できますが、いかがですか?


記録してみました。

  Columns("A").Select
  Selection.Delete Shift:=xlToLeft
  Columns("D").Select
  Selection.Delete Shift:=xlToLeft
  Columns("H:I").Select
  Selection.Delete Shift:=xlToLeft

("A")や("D")や("H:I")などのこの部分を検索して
自動で決める方法が知りたいです。

【54108】Re:列の削除について
発言  かみちゃん  - 08/2/24(日) 19:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>  Columns("H:I").Select
>  Selection.Delete Shift:=xlToLeft
>
>("A")や("D")や("H:I")などのこの部分を検索して
>自動で決める方法が知りたいです。

さきほどのコメントで、列全体が空白かどうか判断するコードを提示させて
いただいたのですが、もう少し提示すると、以下のような感じになります。

Sub Sample2()
 Dim intCol As Integer
 Dim FR As Range
 Dim rngDel As Range

 For intCol = 1 To Columns.Count
  On Error Resume Next
  Set FR = Columns(intCol).Cells.Find("*", , xlValues, xlPart)
  On Error GoTo 0
  If FR Is Nothing Then
   If rngDel Is Nothing Then
    Set rngDel = Columns(intCol)
   Else
    Set rngDel = Union(rngDel, Columns(intCol))
   End If
  End If
  Set FR = Nothing
 Next
 MsgBox rngDel.Address & "を削除します"
End Sub

変数rngDelのセル範囲を削除しますから・・・
>  Columns("H:I").Select
をどのようにしたらいいかわかりますでしょうか?

【54114】Re:列の削除について
お礼  名無し  - 08/2/24(日) 23:22 -

引用なし
パスワード
   ▼かみちゃん さん:

大変お世話になりました。
おかげさまで

Dim intCol As Integer
 Dim FR As Range
 Dim rngDel As Range

 For intCol = 1 To Columns.Count
  On Error Resume Next
  Set FR = Columns(intCol).Cells.Find("*", , xlValues, xlPart)
  On Error GoTo 0
  If FR Is Nothing Then
   If rngDel Is Nothing Then
    Set rngDel = Columns(intCol)
   Else
    Set rngDel = Union(rngDel, Columns(intCol))
   End If
  End If
  Set FR = Nothing
 Next
   
  If Not rngDel Is Nothing Then
    rngDel.EntireColumn.Delete Shift:=xlToLeft
    Set rngDel = Nothing
  End If

で、自分のしたいことができました。
ありがとうございました。

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