Excel VBA質問箱 IV

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

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


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

【42545】シートを開く バンボッシュ 06/9/14(木) 17:25 質問[未読]
【42547】Re:シートを開く TMB 06/9/14(木) 18:00 発言[未読]
【42565】Re:シートを開く バンボッシュ 06/9/15(金) 11:16 お礼[未読]
【42554】Re:シートを開く Mariko 06/9/14(木) 22:23 回答[未読]
【42555】Re:シートを開く Mariko 06/9/14(木) 22:37 発言[未読]
【42567】Re:シートを開く バンボッシュ 06/9/15(金) 11:22 お礼[未読]
【42562】Re:シートを開く Jaka 06/9/15(金) 9:39 発言[未読]
【42569】Re:シートを開く バンボッシュ 06/9/15(金) 11:24 発言[未読]
【42573】Re:シートを開く Jaka 06/9/15(金) 11:52 発言[未読]
【42563】Re:シートを開く Kein 06/9/15(金) 10:45 回答[未読]
【42570】Re:シートを開く バンボッシュ 06/9/15(金) 11:26 お礼[未読]

【42545】シートを開く
質問  バンボッシュ  - 06/9/14(木) 17:25 -

引用なし
パスワード
   こんにちは。
初めて投稿させていただきます。

エクセルのマクロは初めてなのでかなり苦戦しています・・・
それで教えていただきたいのですが、

毎日つける日報を今作成しています。
それで、31日分のシートを作成しました。

ブックを開いたら、今日の日付のシートを開くようにするにはどのようにしたら
いいのでしょうか?
教えていただけますか?宜しくお願いします。

シート名は1〜31までとなっています。

【42547】Re:シートを開く
発言  TMB  - 06/9/14(木) 18:00 -

引用なし
パスワード
   ▼バンボッシュ さん:

>ブックを開いたら、今日の日付のシートを開くようにするにはどのようにしたら
>いいのでしょうか?

シートを開くというのは、シートを選択する(シートをアクティブにする)ということですよね??
まず、エクセルには自動的にマクロを作成してくれる機能があります。
[ツール]-[マクロ]-[新しいマクロの記録]
これをやると、自分がやった処理をマクロのコードにしてくれます。
それで、自分がどのシートを選択したのか。
つまり、シートの選択するにはどのようなコードになるのか。
それを確認してみましょう。

その確認が終わった上で、「今日の日付」とか「ブックを開いたら」と手順を追ったほうが理解はしやすいですよ。
今日の日付であれば、Day関数とDate関数を調べればある程度分かるかも。
ブックを開いたらというのは、ワークブックのオープンイベントでいいのかも。

>シート名は1〜31までとなっています。
シート名が全角になっているのであれば、StrConvも使えるかも。

たぶん希望されているのは、モジュールに貼り付けるコードなんだと思います。
なので、希望されている回答ではなく申し訳ありません。

頑張ってください。

【42554】Re:シートを開く
回答  Mariko  - 06/9/14(木) 22:23 -

引用なし
パスワード
   ▼バンボッシュ さん:

こんばんは。
こんな感じでいかがでしょうか?
'=====================
'THisWorkBookに

Private Sub Workbook_Open()

Dim myvalue
  Worksheets("sheet1").Range("A5").Select
 
  Selection.NumberFormatLocal = "yymmdd"
  R = Range("A5").Text
  myvalue = Val(R)
  Worksheets(R).Activate

End Sub
'===================
シート1のA5に
=Today()
関数を入れてください
シート名は「Sheet1」にしておきます。
必要であれば変更OKですがコードを訂正して下さい・・・
===================
日付のシートの名称(タブ)は
060901


060914
 :
060930
まで30日分を作成します。
今日は060914のシートを自動的(開くと)に該当日を選びます。
一度試してください。

【42555】Re:シートを開く
発言  Mariko  - 06/9/14(木) 22:37 -

引用なし
パスワード
   ▼バンボッシュ さん:

コード一部訂正してください・・・

  Worksheets("sheet1").Range("A5").Select



  Worksheets("sheet1").Select
   Range("A5").Select

に訂正してください。
すみません・・・

【42562】Re:シートを開く
発言  Jaka  - 06/9/15(金) 9:39 -

引用なし
パスワード
   ▼バンボッシュ さん:
>シート名は1〜31までとなっています。
きちんと確認を取ってないけど、これやめた方が良いかも...。
数字だけだとシートのIndexと間違えるようなことがあったような。
1日と2日にした方が良いと思います。

【42563】Re:シートを開く
回答  Kein  - 06/9/15(金) 10:45 -

引用なし
パスワード
   Private Sub Workbook_Open()
  Dim Snm As String

  Snm = CStr(Day(Date))
  Worksheets(Snm).Activate
End Sub

てな感じです。全角なら StrConv を使って変換すること。
ポイントは「シート名の場合は必ず文字列として扱う」ことです。
それにより、Indexと区別することが出来ます。

【42565】Re:シートを開く
お礼  バンボッシュ  - 06/9/15(金) 11:16 -

引用なし
パスワード
   ▼TMB さん:
レスありがとうございます。
早速TMBさんの言うとおり、実行してみました。

そして、ネットでDay関数とDate関数も調べて、
Day関数を使おうと思います。

それで、入れたコードは(とりあえず、今日の日付だけで入れてみました)

Private Sub Workbook_Open()
Dim IngDay
IngDay = Day(Now)

  If IngDay = 15 Then
    Sheets("15").Select
    工事日報作成.Show
  End If
End Sub

なのですが、これを省略的なことって出来るのでしょうか?
1〜31を全部入れるとなると大変なので。。。

それから
>>シート名は1〜31までとなっています。
>シート名が全角になっているのであれば、StrConvも使えるかも。

シート名は半角になっています。けど、上記のコードで
開けました。
あと、自信が無いので、間違っていればご指摘いただけますか?
宜しくお願いします。

【42567】Re:シートを開く
お礼  バンボッシュ  - 06/9/15(金) 11:22 -

引用なし
パスワード
   ▼Mariko さん:
レスありがとうございます。

>日付のシートの名称(タブ)は
>060901
> :
> :
>060914
> :
>060930
>まで30日分を作成します。
とあるのですが、
一年を通して色んな月で作成したいので、上記のようにできません。
コードも記入していただきありがとうございました。

【42569】Re:シートを開く
発言  バンボッシュ  - 06/9/15(金) 11:24 -

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

>1日と2日にした方が良いと思います。

先ほど記入した、コードでやったとき、
問題なく開けたのですが・・・

【42570】Re:シートを開く
お礼  バンボッシュ  - 06/9/15(金) 11:26 -

引用なし
パスワード
   ▼Kein さん:

コードを書いてもらって申し訳ございません。
勉強していきながら、やっていきたいので、
とりあえず、丸写しはやめようと思っております。
ありがとうございます!

【42573】Re:シートを開く
発言  Jaka  - 06/9/15(金) 11:52 -

引用なし
パスワード
   う〜ん。なんていったら良いか

例えば2番目のシート名を「2」にします。

Dim NN As String ←文字列で宣言した変数を使えば大丈夫なようですが
NN = 2
Sheets(NN).Activate

こういうのとか

Dim NN As Long
NN = 2
Sheets(NN).Activate

直に
Sheets(2).Activate

と書けないから、

Dim i As Long
For i = 1 to 5
  Sheets(i).・・・・
Next

と書くと思ったとおりに行かないんです。

Dim NN As String ←文字列で宣言した変数を使えば大丈夫なようですが
これにしても確実そうでないから、やめた方が良いといったまでです。

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