Excel VBA質問箱 IV

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

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


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

【10311】クエリーをチェック まえだ 04/1/17(土) 13:27 質問
【10314】Re:クエリーをチェック Jaka 04/1/17(土) 16:14 回答
【10315】Re:クエリーをチェック kein 04/1/17(土) 17:38 回答
【10317】Re:クエリーをチェック まえだ 04/1/17(土) 20:32 お礼

【10311】クエリーをチェック
質問  まえだ E-MAIL  - 04/1/17(土) 13:27 -

引用なし
パスワード
   いつもお世話になります。
現在、次のようにクエリーを削除するマクロを組みましたが
クエリーが削除された後だとエラーのような気がします。
条件判断などで、クエリーが存在する場合は削除、NOの場合は
スキップする方法はあるのでしょうか?
宜しくお願いします。


Worksheets("対策").Activate
ActiveSheet.Range("A1").Select
'データベースクエリーを削除
'
  With ActiveSheet
  .Columns("A:D").Select  ’この列にデータを抽出
   Selection.ClearContents
   Selection.QueryTable.Delete
  .Range("E8").Select
  End With

Worksheets("検討").Activate

【10314】Re:クエリーをチェック
回答  Jaka  - 04/1/17(土) 16:14 -

引用なし
パスワード
   これで、エラートラップするとか、そのまま回避するとか..。

On Error Resume Next
Worksheets("対策").Activate

【10315】Re:クエリーをチェック
回答  kein  - 04/1/17(土) 17:38 -

引用なし
パスワード
   Dim Qc As Integer, i As Integer
Dim Nm As Name

With Worksheets("対策")
  Qc = .QueryTables.Count
  If Qc > 0 Then
   For i = Qc To 1 Step -1
     .QueryTables(i).Delete
   Next i
  End If
  .Columns("A:D").ClearContents
  .Activate
  .Range("E8").Select
End With
For Each Nm In ThisWorkbook.Names
  Nm.Delete
Next

てな感じでしょーか ? 最後にセルに付いた名前を削除してます。これはクエリーを
かけたときに、Excelが勝手に定義した名前が残るためです。放っておくとどんどん
増えて、トラブルの元になりかねません。

【10317】Re:クエリーをチェック
お礼  まえだ E-MAIL  - 04/1/17(土) 20:32 -

引用なし
パスワード
   ありがとうございます。

エラートラップは、色々な状況に対応できそうですね。
ワークシートの Is Error 関数のVBA版ですね。

クエリーを削除するのに次のように処理をしていました。

'データベースクエリーを削除
'
  With ActiveSheet
  .Columns("A:D").Select
   Selection.ClearContents
   Selection.QueryTable.Delete
  .Range("E8").Select
  End With
以上を実行していると、「メモリー不足です」のエラーで壁に当たっているところでした。

早速組み上げます、ありがとうございます。

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