ここから本文です

マクロ超初心者です。 いつも拝見しており勉強になります。 Excel2007使用 図の...

dat********さん

2018/5/514:26:01

マクロ超初心者です。
いつも拝見しており勉強になります。
Excel2007使用
図のような一行置きのボックス型カレンダーを作成しました。

マクロを使用し、ファイルオープン時に今日の日付にジャンプしたいのですが良い知恵がありましたら伝授お願いします。

補足os Windows10

End Sub,Excel2007使用,Sheet1&quot,一行置き,マクロ超初心者,Set objRange,If Rng.Value

閲覧数:
94
回答数:
4
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

db1********さん

2018/5/517:28:03

Open時に、マクロを実行するには、thisworkbookのシートマクロを使います。
Private Sub Workbook_Open()
・・・・
End Sub

・・・・の部分に直接コードを作成しても良いですし、標準モジュールをcallしても良いです。

仮に、Moduel1に、プロシージャー「todayをアクティブに」を作るとするなら、
Private Sub Workbook_Open()
Module1.todayをアクティブに
End Sub
とします。

そして、標準モジュール1に、「todayをアクティブに」を作成します。

Sub todayをアクティブに()
Dim 年月日 As Date
Dim x As Integer, y As Integer
Dim namae As String

Application.ScreenUpdating = False
namae = "sheet1" ' カレンダーがあるシート名を入れます。
Sheets(namae).Activate

A1セルに、今日の年月日の第一日目を代入します。
年月日 = Format(Date, "yyyy/mm/dd")
Range("a1") = Format(Date, "yyyy/mm") & "/1"

' 1セル毎に調べてみます。
For y = 3 To 13 Step 2
For x = 1 To 7
If Cells(y, x).Value = 年月日 Then
Cells(y, x).Offset(1).Select
i = 1
Exit Sub
End If

Next
Next
Application.ScreenUpdating = True
End Sub

前提となっているカレンダーの日にちは、
A3: =A1-WEEKDAY(A1)+1
B3:=A3+1
A5:=G3+1
B5:=A5+1
での表記です。
(xl2010)

  • 質問者

    dat********さん

    2018/5/708:28:43

    早速の回答ありがとうございます。
    コピペし起動してみたのですが、コンパインエラー(subまたはFunctionが定義されていない)の記述がありスペルをチェックしましたが私の頭ではついて行かず、スペルの検証お願いします。

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

hel********さん

2018/5/517:13:38

カレンダーの日にちをどのように表示されているかによってコードも変わるかもね。単なる数値か、ちゃんとした日付を入れているか、セルの参照でやっているのか・・。表示されているのが日にちの数値であればの一例です。

Private Sub Workbook_Open()
Dim myDay As Integer, rng As Range
myDay = Day(Date)
Sheets("Sheet1").
For Each rng In Range("A3:G11")
If rng.Value = myDay Then
rng.Select
Exit Sub
End If
Next rng
End Sub

pro********さん

2018/5/515:17:00

Dim objWkst As Worksheet
Dim strCriteria As String
Dim objRange As Range

Set objWkst = Worksheets(目的のシート名)
strCriteria = Format(Date, "m/d/yyyy")
Set objRange = objWkst.Cells.Find(What:=strCriteria, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False)
If Not (objRange Is Nothing) Then
objRange.Activate
End If

こんな感じのコードをブックのオープンイベントに仕込めばよいですよ。

-----------------------------------------------------------
サンデープログラマの徒然なるままに
http://programvba.wp.xdomain.jp/
-----------------------------------------------------------

プロフィール画像

カテゴリマスター

tai********さん

2018/5/514:47:59

シート名はSheet1
として



Private Sub Workbook_Open()
Dim r
Sheets("Sheet1").Select
Set r = Range("A:G").Find(Date)
If Not r Is Nothing Then r.Select
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる