Excel VBA質問箱 IV

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

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


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

【47529】必ず削除する tant 07/3/13(火) 14:43 質問[未読]
【47530】Re:必ず削除する ウッシ 07/3/13(火) 14:47 回答[未読]
【47531】Re:必ず削除する tant 07/3/13(火) 17:54 発言[未読]
【47532】Re:必ず削除する tant 07/3/13(火) 18:07 発言[未読]
【47533】Re:必ず削除する tant 07/3/13(火) 18:12 発言[未読]
【47535】Re:必ず削除する ウッシ 07/3/13(火) 19:28 回答[未読]
【47536】Re:必ず削除する tant 07/3/13(火) 20:00 発言[未読]
【47537】Re:必ず削除する ウッシ 07/3/13(火) 20:18 回答[未読]
【47538】Re:必ず削除する tant 07/3/13(火) 20:31 お礼[未読]
【47539】Re:必ず削除する ウッシ 07/3/13(火) 20:41 回答[未読]
【47540】Re:必ず削除する tant 07/3/13(火) 20:50 お礼[未読]

【47529】必ず削除する
質問  tant  - 07/3/13(火) 14:43 -

引用なし
パスワード
   よろしくお願いします。
[閉じる]でも[上書き保存]でも[名前を付けて保存]でも
sheet1のF61を必ずクリアしたいのですが
できますかね。?

  Application.GoTo Reference:="R61C6"
  Selection.ClearContents

【47530】Re:必ず削除する
回答  ウッシ  - 07/3/13(火) 14:47 -

引用なし
パスワード
   ▼tant さん:
こんにちは

ブックモジュールに

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Me.Worksheets("Sheet1").Range("F6").ClearContents
End Sub

「Sheet1」が無い場合等のエラー処理はご自分で考えて見て下さい。

【47531】Re:必ず削除する
発言  tant  - 07/3/13(火) 17:54 -

引用なし
パスワード
   ▼ウッシ さん:
ありがとうございます。コードはうまくいきました
エラー処理でおたずねします
book["test"]とSheet1の両方でチェックしてみたいと思い
下記のような見よう見まねで勉強のため書いてみたのですが
インデックスが有効範囲とでます。
sheet1のチェックと共にご教授お願いします。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim test_bk As Worksheet
  On Error Resume Next
  Set test_bk = Application.Workbooks(test_bk_Name)
  On Error GoTo 0
  If test_bk Is Nothing Then
    MsgBox "test" & _
      "をExcelで開いてから実行して下さい。"
  Me.Worksheets("Sheet1").Range("F6").ClearContents
 End If
End Sub

>▼tant さん:
>こんにちは
>
>ブックモジュールに
>
>Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
>  Me.Worksheets("Sheet1").Range("F6").ClearContents
>End Sub
>
>「Sheet1」が無い場合等のエラー処理はご自分で考えて見て下さい。

【47532】Re:必ず削除する
発言  tant  - 07/3/13(火) 18:07 -

引用なし
パスワード
   すみませんもう一つ質問ですが
bookオープン時同じ事が
>sheet1のF61を必ずクリアしたいのですが
できませんか
たびたびよろしくお願いします。

【47533】Re:必ず削除する
発言  tant  - 07/3/13(火) 18:12 -

引用なし
パスワード
   ▼tant さん:
>すみませんもう一つ質問ですが
>bookオープン時同じ事が
>>sheet1のF61を必ずクリアしたいのですが
>できませんか
>たびたびよろしくお願いします。

下記で解決しました。
Private Sub Workbook_Open()
  Me.Worksheets("sheet1").Range("F61:Q61").ClearContents
End Sub

【47535】Re:必ず削除する
回答  ウッシ  - 07/3/13(火) 19:28 -

引用なし
パスワード
   こんばんは

マクロを設定するブックとは違うブック「test」の「Sheet1」を処理するのですか?
よく分かりませんので、取り敢えずこんな感じで、

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim test_bk As Workbook   'Worksheetですか?
  Dim test_ws As Worksheet  'Worksheet
  On Error Resume Next
'  変数「test_bk_Name」はどこで用意されているのですか?
  Set test_bk = Application.Workbooks(test_bk_Name).Worksheets("Sheet1")
  If test_bk Is Nothing Then
    MsgBox "test" & _
      "をExcelで開いてから実行して下さい。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  Set test_ws = test_bk.Worksheets("Sheet1")
  If test_ws Is Nothing Then
    MsgBox "testにSheet1が有りません。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  test_ws.Range("F6").ClearContents
  On Error GoTo 0
End Sub

【47536】Re:必ず削除する
発言  tant  - 07/3/13(火) 20:00 -

引用なし
パスワード
   ▼ウッシ さん:
返事ありがとうございます。
>こんばんは
>
>マクロを設定するブックとは違うブック「test」の「Sheet1」を処理するのですか?
マクロを設定するbookを[test]の[sheet1]としたいのですが
検索で探したコードなので意味がよくわかりませんでした

ようするに[test]というbookの[sheet1]なら
Me.Worksheets("Sheet1").Range("F6").ClearContents
↑を実行したかったのですが混乱させてすみません
よろしくお願いします。

また
「Sheet1」が無いだけの場合エラー処理方法は
下記部分だけでOKでしょうか
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim sh_ws As Worksheet
  Set sh_ws = Worksheets("Sheet1")
  If sh_ws Is Nothing Then
    MsgBox "Sheet1では有りません。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  sh_ws.Range("F6").ClearContents
  On Error GoTo 0

End Sub

【47537】Re:必ず削除する
回答  ウッシ  - 07/3/13(火) 20:18 -

引用なし
パスワード
   こんばんは

「On Error Resume Next  '追加」
で、OKです。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Dim sh_ws As Worksheet
  On Error Resume Next  '追加
  Set sh_ws = Worksheets("Sheet1")
  If sh_ws Is Nothing Then
    MsgBox "Sheet1では有りません。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  sh_ws.Range("F6").ClearContents
  On Error GoTo 0
End Sub

【47538】Re:必ず削除する
お礼  tant  - 07/3/13(火) 20:31 -

引用なし
パスワード
   ▼ウッシ さん:
↓バッチリできました
エラー処理も難しいです。
何度も聞いて申し訳ないのですが
[test]というbookの[sheet1]の両方の条件を
満たす場合の書き方教えて下さい 今後の参考にしたいので

>
>「On Error Resume Next  '追加」
>で、OKです。
>
>Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
> Dim sh_ws As Worksheet
>  On Error Resume Next  '追加
>  Set sh_ws = Worksheets("Sheet1")
>  If sh_ws Is Nothing Then
>    MsgBox "Sheet1では有りません。"
>    Cancel = True
>    On Error GoTo 0
>    Exit Sub
>  End If
>  sh_ws.Range("F6").ClearContents
>  On Error GoTo 0
>End Sub

【47539】Re:必ず削除する
回答  ウッシ  - 07/3/13(火) 20:41 -

引用なし
パスワード
   こんな感じでしょうか?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  Dim test_bk As Workbook
  Dim test_ws As Worksheet
  On Error Resume Next
  Set test_bk = Workbooks("test.xls")
  If test_bk Is Nothing Then
    MsgBox "test.xls" & _
      "を開いてから実行して下さい。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  Set test_ws = test_bk.Worksheets("Sheet1")
  If test_ws Is Nothing Then
    MsgBox "test.xlsにSheet1が有りません。"
    Cancel = True
    On Error GoTo 0
    Exit Sub
  End If
  test_ws.Range("F6").ClearContents
  On Error GoTo 0
End Sub

【47540】Re:必ず削除する
お礼  tant  - 07/3/13(火) 20:50 -

引用なし
パスワード
   ▼ウッシ さん:
何度も初心者相手にすみませんでした
ありがとうございました。
無事解決です!

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