Excel VBA質問箱 IV

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

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


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

【50727】Aの列に2000年1月1日から現在までの日付を入れたい もりひでひさや 07/8/13(月) 0:43 質問[未読]
【50728】Re:Aの列に2000年1月1日から現在までの日付... かみちゃん 07/8/13(月) 0:50 発言[未読]
【50729】Re:Aの列に2000年1月1日から現在までの日付... もりひでひさや 07/8/13(月) 5:09 発言[未読]
【50731】Re:Aの列に2000年1月1日から現在までの日付... かみちゃん 07/8/13(月) 10:42 発言[未読]
【50730】Re:Aの列に2000年1月1日から現在までの日付... Hirofumi 07/8/13(月) 10:20 回答[未読]
【50732】Re:Aの列に2000年1月1日から現在までの日付... じゅんじゅん 07/8/13(月) 11:23 発言[未読]

【50727】Aの列に2000年1月1日から現在までの日付...
質問  もりひでひさや  - 07/8/13(月) 0:43 -

引用なし
パスワード
   Aの列に2000年1月1日から現在までの日付を入れたいです。
ただし、上が現在で、下のほうが過去にしたいです。
そして、その横(B列)に何曜日かという曜日を入れたいです。(シリアル値でも良い)VBAでp路グラムするには如何したらよいでしょうか?

【50728】Re:Aの列に2000年1月1日から現在までの日...
発言  かみちゃん  - 07/8/13(月) 0:50 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Aの列に2000年1月1日から現在までの日付を入れたい

A1に=TODAY()
A2に=A1-1
これをずっと下までコピー
ではいけないのですか?

曜日は、=A1 として、表示形式を aaa とすればできます。

VBAでしたい理由は何でしょうか?

【50729】Re:Aの列に2000年1月1日から現在までの日...
発言  もりひでひさや  - 07/8/13(月) 5:09 -

引用なし
パスワード
   ▼かみちゃん さん:
どうもありがとう御座います。
VBAでやりたい理由はそのほうが速いかと思ったからです。(マクロで思いいのですが)同じ手間が掛かるなら、この文で十分です。for-next文使えないでしょうか?

【50730】Re:Aの列に2000年1月1日から現在までの日...
回答  Hirofumi  - 07/8/13(月) 10:20 -

引用なし
パスワード
   マクロの記録を少し直してこんなのでは?

Option Explicit

Public Sub Sample()

  Const dtmStart As Date = #1/1/2000#
  
  With ActiveSheet.Range("A1").Resize(, 2)
    .Value = Date
    .Cells(1).NumberFormatLocal = "yyyy/m/d"
    .Cells(2).NumberFormatLocal = "aaa"
    .DataSeries _
      Rowcol:=xlColumns, _
      Type:=xlChronological, _
      Date:=xlDay, _
      Step:=-1, _
      Stop:=CLng(#1/1/2000#), _
      Trend:=False
  End With
  
End Sub

【50731】Re:Aの列に2000年1月1日から現在までの日...
発言  かみちゃん  - 07/8/13(月) 10:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> VBAでやりたい理由はそのほうが速いかと思ったからです。
> 同じ手間が掛かるなら、この文で十分です。
> for-next文使えないでしょうか?

For〜Nextを使いたいのはなぜでしょうか?
使わなくてもできますが、使わなければなりませんか?

コードを組んで、毎日実行するのが手間かどうかわかりませんが、
一応以下のようなコードでできると思います。
Hirofumiさんご提案の方法とは、日付を数式で設定しているかどうかの差だけです。

Sub Sample()
 Dim lngRow As Long
 
 With Range("A1")
  '現在の日付
  .Value = Date
  '2000/1/1からの日数を取得
  lngRow = DateDiff("d", DateValue("2000/1/1"), Date)
  '取得した日数分の数式を設定
  .Offset(1).Resize(lngRow).Formula = "=" & .Address(0, 0) & "-1"
  .Offset(, 1).Resize(lngRow + 1).Formula = "=" & .Address(0, 0)
  '曜日の表示形式を設定
  .Offset(, 1).Resize(lngRow + 1).NumberFormat = "aaa"
 End With
 MsgBox "終了しました"
End Sub

【50732】Re:Aの列に2000年1月1日から現在までの日...
発言  じゅんじゅん  - 07/8/13(月) 11:23 -

引用なし
パスワード
   >また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

別サイト(モーグ)にて
2007/08/13(月)08:20:03 に質問を行ない
2007/08/13(月)09:11:41 に解決しております。

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