Excel VBA質問箱 IV

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

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


52387 / 76736 ←次へ | 前へ→

【29188】Re:ワークシート間の検索集計
質問  toki  - 05/9/27(火) 12:01 -

引用なし
パスワード
   ▼ponpon さん:
こんにちは。tokiです。

ご指摘の通りマクロ記録でやってみましたが、マクロ記録ではやはり、セル範囲が特定されてしまうので、運用に耐えないようです。

見出し 6行目まで
社員データ 7行目以降

現在までご説明したように仕様としては7行以降の社員データ行は追加や削除によって可変のため、マクロ記録ですと難しいです。

そこで、次のようなマクロを作成しましたが・・・

Private Sub データクリアボタン_Click()
  
  Dim myDR As Range
  Dim daTa As Variant
  Dim daTagyo As Variant
  Dim ans As Integer
  
  Application.DisplayAlerts = False
  ans = MsgBox("全社員の得点データを一括削除します。本当に削除しますか?", vbYesNo + vbExclamation, "オールクリア")
  
  Select Case ans
    Case vbYes
    MsgBox "全社員の得点データを削除します。", vbInformation, "オールクリア"
       
  '****************************************
  '各月シートから得点データ領域を削除
  '****************************************
  For i = 1 To 12
  With Worksheets(i & "月")
    
    ’データ領域は7行目以降の各行D列〜N列。この範囲を指定
    Set myDR = .Range("D7", .Range("N65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
     myDR.ClearContents
    End With
  Next
    Case vbNo
  
  End Select
  Application.DisplayAlerts = True
End Sub

実行すると一見うまく行くのですが、全データを削除した後に、再度削除ボタンを押すとエラーがでます。
.Range("D7", .Range("N65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
にしているため、7行目以降のN列のデータが無い状態では、.Range("N65536").End(xlUp)が6行目の見出し部分を示すことになり
エラーとなってしまうのでしょうか?

やはり、各行を指定して該当行にクリアの繰り返し処理を入れていく方法がよいのかな、と思っています。
そこで方法として、A列の職務から可視データすべてを抽出し、順番にデータ領域(4列目〜14列目)を削除する、という繰り返し処理ができないでしょうか?
A列の全ての職務は"*職"で抽出できます。

例えば

Private Sub データクリアボタン_Click()
  
  Dim myDR As Range
  Dim daTa As Variant
  Dim daTagyo As Variant
  Dim ans As Integer
  Dim i As Integer
  Dim k As Variant
  
  Application.DisplayAlerts = False
  ans = MsgBox("全社員の得点データを一括削除します。本当に削除しますか?", vbYesNo + vbExclamation, "オールクリア")
  
  Select Case ans
    Case vbYes
    MsgBox "全社員の得点データを削除します。", vbInformation, "オールクリア"
       
  '****************************************
  '各月シートから得点データ領域を削除
  '****************************************
  For i = 1 To 12
    With Worksheets(i & "月")
    
    k = Application.Match("*職", .Range("A:A"), 0)
      If Not IsError(k) Then
      .Cells(k, 4).ClearContents
      .Cells(k, 5).ClearContents
      .Cells(k, 6).ClearContents
      .Cells(k, 7).ClearContents
      .Cells(k, 8).ClearContents
      .Cells(k, 9).ClearContents
      .Cells(k, 10).ClearContents
      .Cells(k, 11).ClearContents
      .Cells(k, 12).ClearContents
      .Cells(k, 13).ClearContents
      .Cells(k, 14).ClearContents
      Else
      Exit Sub
      End If
    
    End With
  Next
    Case vbNo
  
  End Select
  Application.DisplayAlerts = True
End Sub

こういう感じにすると、各シートの1行目だけは削除できます。
これを、A列において"*職"が存在している限り、ループさせる、というマクロにするためにはどのように改造すればよいでしょうか?
ご指導お願いいたします。

0 hits

【28969】ワークシート間の検索集計 toki 05/9/19(月) 23:13 質問
【28972】Re:ワークシート間の検索集計 Statis 05/9/20(火) 9:09 回答
【28996】Re:ワークシート間の検索集計 toki 05/9/20(火) 21:45 お礼
【28995】Re:ワークシート間の検索集計 ponpon 05/9/20(火) 19:25 発言
【28997】Re:ワークシート間の検索集計 toki 05/9/20(火) 21:46 質問
【29000】Re:ワークシート間の検索集計 ponpon 05/9/20(火) 22:52 発言
【29002】Re:ワークシート間の検索集計 toki 05/9/21(水) 7:19 お礼
【29035】Re:ワークシート間の検索集計 ponpon 05/9/22(木) 2:46 発言
【29052】Re:ワークシート間の検索集計 toki 05/9/22(木) 15:21 お礼
【29086】Re:ワークシート間の検索集計 toki 05/9/23(金) 16:56 お礼
【29091】Re:ワークシート間の検索集計 ponpon 05/9/23(金) 21:05 発言
【29096】Re:ワークシート間の検索集計 toki 05/9/23(金) 22:03 質問
【29097】Re:ワークシート間の検索集計 ponpon 05/9/24(土) 0:23 発言
【29099】Re:ワークシート間の検索集計 toki 05/9/24(土) 12:46 お礼
【29104】Re:ワークシート間の検索集計 ponpon 05/9/24(土) 21:40 発言
【29106】Re:ワークシート間の検索集計 toki 05/9/24(土) 23:14 お礼
【29108】Re:ワークシート間の検索集計 ponpon 05/9/25(日) 5:49 発言
【29109】Re:ワークシート間の検索集計 toki 05/9/25(日) 8:27 お礼
【29122】Re:ワークシート間の検索集計 ponpon 05/9/25(日) 16:50 発言
【29126】Re:ワークシート間の検索集計 toki 05/9/25(日) 19:45 質問
【29128】Re:ワークシート間の検索集計 ponpon 05/9/25(日) 21:41 発言
【29188】Re:ワークシート間の検索集計 toki 05/9/27(火) 12:01 質問
【29199】Re:ワークシート間の検索集計 toki 05/9/27(火) 14:21 お礼
【29437】Re:ワークシート間の検索集計 toki 05/10/4(火) 23:08 質問
【29448】Re:ワークシート間の検索集計 Jaka 05/10/5(水) 13:16 発言
【29454】Re:ワークシート間の検索集計 ponpon 05/10/5(水) 18:34 発言
【29463】Re:ワークシート間の検索集計 toki 05/10/5(水) 22:21 質問
【29467】Re:ワークシート間の検索集計 ponpon 05/10/5(水) 22:55 発言
【29526】Re:ワークシート間の検索集計 toki 05/10/6(木) 21:57 お礼
【29529】Re:ワークシート間の検索集計 ponpon 05/10/6(木) 23:34 発言
【29461】Re:ワークシート間の検索集計 toki 05/10/5(水) 22:08 質問
【29462】Re:ワークシート間の検索集計 toki 05/10/5(水) 22:12 発言

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