[[20151127155004]] 『コメント覧がつかえないです。& β様へ』(忘れな草) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『コメント覧がつかえないです。& β様へ』(忘れな草)

 β様
 回答ありがとうございます。
 マクロの記録程度の知識しかない私ですが
 方法の2を下記のようにしたのですが
 エラ−になりました。
 宜しくお願いいたします。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A6:M1000")) Is Nothing Then Exit Sub
    Dim r As Range
    Application.EnableEvents = False
    For Each r In Intersect(Target, Range("A6:M1000"))
        If IsDate(r.Value) = True Then r.Offset(, 1).Value = Time
        If r.Value = "" Then r.Offset(, 1).ClearContents
    Next
    Application.EnableEvents = True
 End Sub

 Private Sub Auto_Open()
    ActiveSheet.Protect UserInterfaceOnly:=True

 End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 まず、

 Private Sub Auto_Open()

 これは、どのモジュールに書きましたか?
 標準モジュールなら Sub Auto_Open() ですけど、それより、ThisWorkbookモジュールの Private Sub Workbook_Open() がβの好みです。
 すくなくとも、もし、Worksheet_Change と同じシートモジュールに書いたのであれば実行はされません。

 次に、プロテクトするシートですが、 ActiveSheet とすると、ブックを開いたときに【たまたま】アクティブになっているブックが対象になります。
 Sheets("対象のシート名").Protect とすべきですね。

(β) 2015/11/27(金) 17:06


 β様
 >これは、どのモジュールに書きましたか?
 標準モジュールに記述してまいました。
 また、Worksheet_Change と同じシートモジュールに記述しました。

 会社のパソコンではないので検証はできませんが
 どうでしょうか
 宜しくお願いいたします。

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("A6:M1000")) Is Nothing Then Exit Sub
    Dim r As Range
    Application.EnableEvents = False
    For Each r In Intersect(Target, Range("A6:M1000"))
        If IsDate(r.Value) = True Then r.Offset(, 1).Value = Time
        If r.Value = "" Then r.Offset(, 1).ClearContents
    Next
    Application.EnableEvents = True
 End Sub

Sub Auto_Open()

   Sheets("商品管理表").Protect UserInterfaceOnly:=True

 End Sub

(忘れな草) 2015/11/27(金) 21:28


 >>標準モジュールに記述してまいました。
 >>また、Worksheet_Change と同じシートモジュールに記述しました。

 この意味が分かりません。
 どのモジュールに書いたのですか?

 まず、Private Sub Worksheet_Change これは シートモジュールに書くべきコードです。

 で、Auto_Open を使うなら、それは標準モジュールに、Private Sub Workbook_Open を使うなら Thisworkbookモジュールに。

 それぞれのプロシジャを適切な場所記記述してください。

(β) 2015/11/27(金) 21:52


 標準モジュールとシートモジュールの区別がついていないのかも
http://vbae.odyssey-com.co.jp/column/no15_1.html
(マナ) 2015/11/28(土) 18:50

 マナさんご紹介のサイトの他、以下のサイトでも、どんなモジュールがあって、各プロシジャは
 どこにかいたらいいかという切り口で説明されていますので参考にしてください。

http://officetanaka.net/excel/vba/beginner/10.htm
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_040.html
http://excel-ubara.com/excelvba1/EXCELVBA304.html

 これらサイトの説明とかぶりますけど、簡単にメモ。

 ・標準モジュール

  通常(何が通常かという議論はありますが)の多くのプロシジャは、この標準モジュールというところに書きます。
  ちょっと特殊なプロシジャとして Auto_Open や Auto_Close という名前のプロシジャを書くことができます。
  ブックが開かれるとき、閉じられるときに、自動実行されます。

 標準モジュール以外の以下のモジュールは、まとめて「オブジェクトモジュール」と呼ばれ、それぞれに特化したプロシジャを記述します。

 ・ユーザーフォームモジュール

  特定のユーザーフォームでのイベント処理を中心に、ユーザーフォーム内で処理するコードを書きます。

 ・クラスモジュール

  ちょっと特殊なモジュールです。詳しい説明は割愛します。

 ・シートモジュール

  個別のシート上のイベント処理を中心にしたプロシジャを書きます。
  Worksheet_Change 等はこのモジュールです。

 ・ThisWorkbookモジュール

  マクロブック全体のイベント処理、ブックが開かれる、閉じられる といったイベント時の処理を書きます。
  マクロブック内のすべてのシートのイベント処理を、ここに書くこともできます。
  Private Sub Workbook_Open はここに書きます。

(β) 2015/11/28(土) 19:21


コメント欄が使えない場合の対応なぞ。

私もしょっちゅうコメント・プレビューボタンが出なくなります。Google広告に邪魔されている感じ。
この場合、ブラウザの閲覧の履歴(Cookieのせい?)を削除してから再表示すると、出てきたりしますよ。
(???) 2015/11/30(月) 10:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.