Excel VBA質問箱 IV

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

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


2551 / 13645 ツリー ←次へ | 前へ→

【67307】月が変わったらその列を削除したい あき 10/11/22(月) 20:49 質問[未読]
【67308】Re:月が変わったらその列を削除したい マジ山レス夫 10/11/23(火) 3:26 回答[未読]
【67309】Re:月が変わったらその列を削除したい SK63 10/11/23(火) 3:41 発言[未読]
【67310】Re:月が変わったらその列を削除したい SK63 10/11/23(火) 4:06 発言[未読]
【67314】Re:月が変わったらその列を削除したい あき 10/11/23(火) 19:29 お礼[未読]

【67307】月が変わったらその列を削除したい
質問  あき  - 10/11/22(月) 20:49 -

引用なし
パスワード
   D1から○/1(○月1日)としてE1,F1と31日まで連続しています。
その中で土日と会社の休みを削除します。

そうすると31行とっている為、翌月の日付が入ってきてしまいます。
これは変更しないこと前提です。

その為、翌月に入った列をを全て削除しなくてはいけません。
日付の最後の列の右はブランクです。

何か良い選択削除方法はありませんでしょうか?
どうぞ宜しくお願い致します。

【67308】Re:月が変わったらその列を削除したい
回答  マジ山レス夫  - 10/11/23(火) 3:26 -

引用なし
パスワード
   columnwidth=0

【67309】Re:月が変わったらその列を削除したい
発言  SK63  - 10/11/23(火) 3:41 -

引用なし
パスワード
   ▼あき さん:

流れ的にはこのようにしますが、ループ等はFORでなくてもよいです。
隣同士のセルの月を比べる Month(Cells(1, ret))
違ったら削除する.     Columns(ret).Delete Shift:=xlToLeft
列がずれるのでretを引く
Cells(1, ret) = ""になるまでか35まで繰り返す。

Sub test()

Dim ret As Integer

For ret = 5 To 35

If Month(Cells(1, ret - 1)) <> Month(Cells(1, ret)) Then
If Cells(1, ret) = "" Then
  Exit For
Else
  Columns(ret).Delete
  ret = ret - 1
End If
End If

Next ret


End Sub

【67310】Re:月が変わったらその列を削除したい
発言  SK63  - 10/11/23(火) 4:06 -

引用なし
パスワード
   別の方法ですがこちらは空になるまで繰り返します。
このほかにもOFFSETを使ったりしても可能ですので、ケースにより
使い分けてください。

Sub t()

Dim ret As Integer
ret = 5

Do Until Cells(1, ret) = ""
 If Month(Cells(1, 4)) <> Month(Cells(1, ret)) Then
  Columns(ret).Delete
  ret = ret - 1
 Else
  ret = ret + 1
 End If
 
Loop

End Sub

【67314】Re:月が変わったらその列を削除したい
お礼  あき  - 10/11/23(火) 19:29 -

引用なし
パスワード
   SK63さんので無事うまく行きました。
ありがとうございました。
大変助かりました。

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