[[20190614213916]] 『マクロの起動条件に』(ひー) ページの最後に飛ぶ

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

 

『マクロの起動条件に』(ひー)

いつもお世話になっております
マクロの起動条件に毎週◯曜日に起動するとかいうのはできますでしょうか

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


 こんなページがありました。

http://www.siminpc-kitakyushu.com/index.php?QBlog-20141029-1
(SoulMan) 2019/06/14(金) 21:46


毎日ファイルは開くのですがマクロを実行したい曜日は決まっててそこで悩んでます
(ひー) 2019/06/14(金) 22:08

 すみません。寝てました(^^;
Option Explicit
Private Sub Workbook_Open()
If Weekday(Date) = 1 Then
    MsgBox Format(Weekday(Date), "aaaa")
Else
    MsgBox Format(Weekday(Date), "aaaa")
End If
End Sub
みたいな????
(SoulMan) 2019/06/14(金) 22:49

つまり
現在
  MsgBox Format(Weekday(Date), "aaaa")
の部分に
動作を書けばよろしいでしょうか
(ひー) 2019/06/14(金) 22:53

 それでもいいですし、、Call(私は、Callという書き方をしませんが(^^;)

 なんてゆうのでしょうか???コードを呼ぶ??難しいね。サブルーチンを書く、、とかでしょうか??
(SoulMan) 2019/06/14(金) 22:59

>毎日ファイルは開く
とりあえず、開いた時にマクロを実行するなら↓が参考になりそうです。
https://excel-ubara.com/excelvba4/EXCEL239.html

>曜日は決まって
難しく考えずに、とりあえずマクロを実行してから、その中で曜日によって分岐すればいいんじゃないですか?
http://officetanaka.net/excel/vba/function/WeekDay.htm

    Private Sub Workbook_Open()
        Select Case Weekday(Date)
            Case vbSunday
                MsgBox "日曜日です"
            Case vbMonday
                MsgBox "月曜日です"
            Case vbTuesday
                MsgBox "火曜日です"
            Case vbWednesday
                MsgBox "水曜日です"
            Case vbThursday
                MsgBox "木曜日です"
            Case vbFriday
                MsgBox "金曜日です"
            Case vbSaturday
                MsgBox "土曜日です"
        End Select
    End Sub

(もこな2) 2019/06/15(土) 07:57


ありがとうございました何かありましたらまたお願いします
(ひー) 2019/06/15(土) 18:56

ちなみに例えば月曜日に初めて開くときだけに起動するとかってできますか
つまり月曜日に初めて開くときだけに起動して同じ日の2回目以降は普通に開くとかってできますか
いろいろすいません
(ひー) 2019/06/17(月) 16:52

繰り返しになりますが、決まったときに起動するではなく、とりあえず実行してしまってから、条件分岐したらいいのでは?

たとえば、管理用のシートのA1セルにでも、無条件で当日の日付を出力するようにしておき、ブックを開いたときに、そのセルをチェックして、当日の日付が入っていたら処理をやめるとか…

(もこな2) 2019/06/17(月) 18:47


なるほどありがとうございます 
管理用シートに日付はわかりますがその条件の構文はどう書けばよいのでしょうか
(ひー) 2019/06/17(月) 20:42

全部答えてしまうのも良くないとおもいますので、とりあえずヒントだけ。
 (1)ブックを開いたときに、管理用のシートのA1セルをみて、今日の日付か判定
 (2)↑が真なら、処理中止
 (3)やりたい処理
 (4)管理用のシートのA1セルに、今日の日付を書き込む

わからない場合でも、自分なりに↑の流れで作ってみてコード見せてください。

(もこな2) 2019/06/17(月) 22:15


わかりました私なりに調べて書いてみます
数日お待ちください
(ひー) 2019/06/17(月) 22:38

IF 条件式 Then
というのはわかりますが徳亭のシートを指定する式がわかりません
教えていただけませんか
よろしくおねがいします
(ひー) 2019/06/19(水) 19:09

横いり失礼致します。こんばんは^^
Msgbox Worksheets("徳亭のシート").Range("A1").Value

シート名が 徳亭のシート というシートのA1の値が表示されます。
m(_ _)m

(隠居じーさん) 2019/06/19(水) 19:25


失礼しました徳亭✕→特定◯です訂正します
(ひー) 2019/06/19(水) 19:52

ひーさん
自学自習しないで全部やってもらおういう気持ちは捨てなさい。
() 2019/06/19(水) 20:40

 方法は色々あると思いますが、、例えば、、↓こんな感じ、、、でどうでしょう???
For Each ws In Worksheets
    If ws.Name = "特定" Then
        MsgBox ws.Name & " です。"     '特定と表示される。。。はず??
    Else
        MsgBox ws.Name & " です。"     '特定ではないシート名が表示される。。。はず??
    End If
Next
(SoulMan) 2019/06/19(水) 20:49

言葉の訂正はともかく、隠居じーさんさんのヒントで解ったのでしょうか?

ちなみに過去ログを見てみると、すでにシートとセルを指定して値を取得する方法は教わっているようにおもいます。

(もこな2) 2019/06/19(水) 20:51


わかりました
やってみます
(ひー) 2019/06/19(水) 20:56

なかなかキャッチボールの球を受け取ってもらえませんが…
 管理用のシートのA1セルをみて、今日の日付か判定

↑は、過去ログを読み直したり、隠居じーさんさんのヒントで考えてみて解ったのでしょうか?
解らない場合は、一旦やりたいことは忘れて「アクティブシートのA1セルの値を、メッセージボックスで表示するマクロ」を作って見せてください。

なお、方法云々は理解するつもりがなくて、完成品のコードが欲しいだけなら、そのように言ってもらったほうが、お互いの気持ちがすれ違わなくてよいとおもいます。
(もこな2) 2019/06/20(木) 08:58


いちおうつくってみました
Sub テスト()
If Worksheets("管理用").Range("A1") = TODAY Then
 MsgBox "  今日すでに開いてます。"
Else
 MsgBox "  今日はじめて開きます。"
End Sub
ですがTODAYのところで変数が定義されてませんと出ます

(ひー) 2019/06/20(木) 21:06


失礼しました
If Worksheets("管理用").Range("A1") = (Date) Then
 MsgBox "  今日すでに開いてます。"
Else
 MsgBox "  今日はじめて開きます。"
End If
End Sub

で解決しました
(ひー) 2019/06/20(木) 21:14


そこまで出来たなら、あとは組み合わせるだけですね。
    Private Sub Workbook_Open()
        If Worksheets("管理用").Range("A1").Value <> Date Then

            Select Case Weekday(Date)
                Case vbSunday
                    MsgBox "日曜日です"
                Case vbMonday
                    MsgBox "月曜日です"
                Case vbTuesday
                    MsgBox "火曜日です"
                Case vbWednesday
                    MsgBox "水曜日です"
                Case vbThursday
                    MsgBox "木曜日です"
                Case vbFriday
                    MsgBox "金曜日です"
                Case vbSaturday
                    MsgBox "土曜日です"
            End Select

            Worksheets("管理用").Range("A1").Value = Date
        End If

    End Sub

なお、管理用シートは不用意に触られないように非表示にしておくとよさそうです。

(もこな2) 2019/06/21(金) 06:22


If Worksheets("管理用").Range("A1") = (Date) Then
のところ
=ではなく<>なんですか
(ひー) 2019/06/21(金) 17:21

>If Worksheets("管理用").Range("A1") = (Date) Then
>のところ
>=ではなく<>なんですか

一旦、丸ごと標準モジュールの適当なプロシージャにコピーして、ステップ実行をして研究してみてください。
試さずに全部聞かれても対応できかねます。

結局なにがやりたいのか教えて(示して)もらってませんが、「やりたいこと(仮)」として1日のうち【初めて開いたときだけ】○曜日ですと表示する。
ということで話を進めているつもりです。

(もこな2) 2019/06/21(金) 18:40


解決しました
もこなさんが書かれてた
     If Worksheets("管理用").Range("A1").Value = (Date) Then
を
     If Worksheets("管理用").Range("A1").Value <> Date Then

   にしたところ同日2回目以降メッセージボックスは表示されなくなりました
ありがとうございます
また連絡が遅くなりすいませんでした
今後とも宜しくお願いします

(ひー) 2019/07/05(金) 17:14


>もこなさんが書かれてた
> If Worksheets("管理用").Range("A1").Value = (Date) Then
そんなこと書いている回答者さんはいませんよ。(もちろん私も書いていないです)

>同日2回目以降メッセージボックスは表示されなくなりました
【一旦、丸ごと標準モジュールの適当なプロシージャにコピーして、ステップ実行をして研究してみてください。】と言ったはずですが?
(もし、言うとおりにステップ実行されているなら、「管理用シートのA1セルが同日の日付じゃない場合だけ、Select Caseに進むことが理解できました。」とか言ってほしいところです)

>今後とも宜しくお願いします
他のトピックで興味があればコメントするかもしれませんが、こちらのトピックに関してはとりあえず解決したらしいですし、疲れたので追加で聞きたいことがあったとしても私は降ります。

(もこな2) 2019/07/05(金) 18:25


コメント返信:

[ 一覧(最新更新順) ]


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