• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付を元にカウンター~質問に追加です)

日付を元にカウンター~質問に追加です

このQ&Aのポイント
  • 質問内容: ベストアンサーまで選択してしまったが、追加で質問したい。質問内容はWinXp Excel2003のVBAで、請求書の番号を日付が変更したら「0」に戻す方法を悩んでいる。現在の問題は変数のクリアと日付の比較で、解決策を教えてほしい。
  • 回答内容: シートのA1に日付、B1に請求書番号を保存し、本日の日付が変わった場合はA1の日付を更新し、B1の請求書番号をリセットする処理を提案している。関数の戻り値は請求書番号であり、変数の型は整数型としている。
  • 追加質問内容: 日付確認という変数について質問しているが、実際には請求書番号が格納されており、変数の型はIntegerである。また、関数からのルーチンはモジュール内でも使用できる。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

こんにちは 請求書番号ら月日の情報を入れては如何でしょうか(月日の情報4桁+連番3桁) 今日なら 0810001~ 請求書番号のあるセルB1は文字列形式で Sub Test()   Dim 請求書番号 As String   Dim str月日 As String   請求書番号 = Range("B1").Value   str月日 = Format(Now, "mmdd")   If Left(請求書番号, 4) = str月日 Then     '本日なら+1     Range("H2").Value = str月日 & Format(CLng(Right(請求書番号, 3)) + 1, "000")   Else     '月日が変われば     Range("H2").Value = str月日 & "001"   End If End Sub

muuuug
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 休みに入ってしまい、確認せず、思い悩んでいました。 でも、前回の方の回答を読解して、なんとかうまくできました。 そのあとで、かくにんしたところ、watabe007さんが、御回答いただいていたので、感謝しております。日付を管理番号に加えるお知恵を生かしてみます。 本当にありがとうございました。 (その上訂正までしていただき、申し訳ありませんでした。)<m(__)m>

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

訂正     '本日なら+1     Range("H2").Value = str月日 & Format(CLng(Right(請求書番号, 3)) + 1, "000")          ↓     Range("B1").Value = str月日 & Format(CLng(Right(請求書番号, 3)) + 1, "000")     '月日が変われば     Range("H2").Value = str月日 & "001"          ↓     Range("B1").Value = str月日 & "001"

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 日付を元にカウンター数を”0”にする方法

    WinXp Excel2003 のVBAです。(初心者なので言葉足らずのときは申し訳ありません) 請求書の番号を日付が変更したら、”0”に戻す方法で悩んでいます。 モジュールで、パブリック宣言して Public Sub 初期設定() Dim 本日, 受付1, 受付2 As String, 採番 As Integer 本日 = Today() End Sub ここで行き詰ってしまいました。本日変数ひ日付を代入して、日付が変わったものと比較するのに、 どの段階で比較すればいいのか? パソコンのスイッチを切ってしまったら、変数はクリアになってしまってう・・・等々考えていくうちに わからなくなってしまいました。 多分単純なことなのだと思います。(いろいろネットで調べてみましたが、似たようなものがなかったので、どなたか、似たような参考でもけっこうですので、教えていただけないでしょうか?

  • 日付と時刻を比較して一致した行を抜き出す。

    【Sheet1】             【Sheet2】     A        B        A         B 1 2008/1/2   00:00      1 2008/1/1   22:00 2 2008/1/2   01:00      2 2008/1/1   23:00 3 2008/1/2   02:00      3 2008/1/2   00:00 4 2008/1/2   02:00      4 2008/1/2   01:00 【Sheet1】のA行セルと【Sheet2】のA行セルの文字列を比較し、 一致しない場合は【Sheet2】のセルを一つずらしA3【一致】するセルと比較するまで ループを続ける。 ※ 上記例の場合だと日付一致は【Sheet1】A1 ⇔ 【Sheet2】A3 一致した時点で一致した【Sheet1】のAセルの隣B列と比較して、 【Sheet1】の日付、時刻が一致した列を検出する。 ※ 最終的に条件が一致して抜き出すのは 結果 : 【Sheet1】のA1行 そんなマクロを作っているのですが、 何かもっと簡潔に作れるやり方ってありますでしょうか? ヒントだけでもいいのでご教授していただけたら幸いです・・。 わかりにくくてすいません; ----------------------------------------------------------------------------------------------------- Dim Com As Integer Dim Com2 As Integer Dim Storage As String Dim i As Long ' Month関数を使う Do Until Month(Cells(i, 1).Value) = 11 For Com = 1 To 100 'Com = 日付 ' 【Sheet1】の指定されたAセルが【Sheet2】の指定されたAセルが一致しているかどうか If CDate(Worksheets(Sheet1).Range("A" & Com)) = CDate(Worksheets(Sheet2).Range("A" & Com)) Then ' 一致すれば【Sheet1】のAセルの文字列をStorage変数に格納 Storage = ActiveCell.Value Else ' Falseの場合、1行改行する ActiveCell.Offset(1, 0).Select End If Next Loop ----------------------------------------------------------------------------------------------------

  • 日付の表示について

    im myDate As Date myDate = TextBox1.Text Sheet1.Range("B1").Value = myDate Sheet1.Range("B1").NumberFormatLocal = "m" *********************************************** 上のようにTextBoxで入力された日付で、 1日≦myDate>25日の場合は(例:12/10)⇒ セルB1には「12月」と表示 25日≦myDate≧31日の場合は(例:12/25)⇒ セルB1には「1月」と表示 させたいのですが、どのようにしたらよいのでしょうか。

  • Excel2007VBA 日付の加算について

    ●質問の主旨 コピー元のシートの特定セル(A3セル)に入力されている日付に対して 加算を行い、その加算した日付をシート名とコピー先の シートの特定セルに入力するためにはどうすればよいでしょうか? 具体的には下記のコードをどのように書き換えればよいでしょうか? 「Worksheets(i + 1).Name = mydate」のところでエラーが出てしまいます。 ご存知の方、ご教示願います。 ●コード Sub 一週更新() Application.ScreenUpdating = False Dim i As Integer Dim mydate As Date '既存のシート数を取得 i = ThisWorkbook.Worksheets.Count '最終シートをコピーして後ろに挿入 Worksheets(i).Copy after:=Worksheets(i) 'mydateは最終シートのA3セルに入力されている日付の1週間後の日付とする mydate = DateAdd("ww", 1, Worksheets(i).Range("A3")) '追加したシートのシート名はmydate2の日付とする Worksheets(i + 1).Name = mydate '新しく作成したワークシートについて以下の処理を行う With ActiveSheet Range("A3") = mydate Range("A12").ClearContents Range("A19").ClearContents Range("A26").ClearContents Range("A32").ClearContents End With Application.ScreenUpdating = True End Sub ●補足 上記コードは週単位の報告書を作成するためのコードです。 コピー元のA3セルは表示上は9/16となっており、 「セルの書式設定上」は「日付」→「3/14」, ロケールは日本語です。 私はVBA初心者です。

  • エクセルVBAで指定したセルへジャンプするコード(追加の追加質問です)

    http://oshiete1.goo.ne.jp/qa2903797.html たびたびすみません。最後にひとつだけお願いします。 お教えいただいた下のコードは順調に動作するのですが、 対象セルが結合セルの場合、エラーが出てしまいます。 とまってしまうコードの部分は With Selection.AddComment です。 エラーメッセージにはプロシージャの呼び出し、 または引数が不正です。(Error 5)と書いてあります。 結合セルは動作しないものでしょうか? Sub test01() Dim x As String Dim ThisSheet_Name As String Dim Sheet_Name As String Dim Range_Name As String Dim I As Integer, n As Integer Dim Ans As Integer Dim myComment As String '新規追加 Dim Colors As Integer '新規追加 ThisSheet_Name = ActiveSheet.Name '設定シート Select Case Workbooks.Count Case 1 MsgBox "チェックするファイルがありません。" Exit Sub Case 2 For n = 1 To 2 If Workbooks(n).Name <> ThisWorkbook.Name Then x = Workbooks(n).Name '開いている“もうひとつのブック”の名前 End If Next Case Else MsgBox "他に開いているファイルが複数のため対象を特定できません。" Exit Sub End Select I = 0 Do While (1) With ThisWorkbook.Sheets(ThisSheet_Name) If .Range("A3").Offset(I, 0).Value = "" Then MsgBox "検査項目は以上です。" ThisWorkbook.Activate Exit Do 'A列の3行目以下が、空白なら終わる End If Sheet_Name = .Range("A3").Offset(I, 0).Value Range_Name = .Range("B3").Offset(I, 0).Value myComment = .Range("C3").Offset(I, 0).Value End With Windows(x).Activate Sheets(Sheet_Name).Select Range(Range_Name).Select Colors = Selection.Interior.ColorIndex '新規追加 Selection.Interior.ColorIndex = 6 With Selection.AddComment .Visible = True .Text myComment End With Range(Range_Name).Select Ans = MsgBox("「次をチェックしますか?」", vbYesNo) Selection.Interior.ColorIndex = Colors '修正 Selection.ClearComments '新規追加 If Ans = vbYes Then I = I + 1 Else Exit Do End If Loop End Sub

  • Excellマクロ Cellsの範囲選択について

    エクセル2003についてお尋ねします。 A1には行番号にあたる変数が表示されるようになっています。 その変数によって選択するセルの範囲が変わるようにすることが目的でした。 「A1の行番号の5~10列目を選択する」というマクロを 下記のような記述を行いましたが、※のところでエラーが出てしまい、問題がわからずにおります。 お手数ですが解決策をご教授ください。 Sub マクロ1() Dim j As Integer j = Range("A1") Worksheets("Sheet1").Activate Range(Cells(j, 5), Cells(j, 10)).Select ←※ End Sub よろしくお願いいたします。

  • エクセルのVBAコードにつてい

    以下のコードについて、その内容をまだ自分の知識では理解できず困っておりまして、アドバイスいただければと思いまして書き込みました。 『コード』 Sub Test() Dim Lc As Integer Dim Ct As Integer Dim MyR As Range Dim C As Range Dim D As Range Lc = Range("A1").End(xlToRight).Column - 2 For Each C In Range("B2", Range("B65536").End(xlUp)) Ct = WorksheetFunction.Count(C.Offset(, 1).Resize(, Lc)) If Ct > 0 Then Set MyR = C.Offset(, 1).Resize(, Lc).SpecialCells(2, 1) For Each D In MyR With Sheets("Sheet2").Range("A65536").End(xlUp) .Offset(1).Value = C.Value .Offset(1, 1).Value = Cells(1, D.Column).Value End With Next Set MyR = Nothing End If Next With Sheets("Sheet2") .Columns("A:B").AutoFit .Activate End With End Sub 『質問』 1.「Lc = Range("A1").End(xlToRight).Column - 2」の部分の解釈は「A1から右方向に一番最後のセルまでを範囲指定し、その一番右のセルの列番号を取得する」変数という解釈でいいのか 2.「Ct = WorksheetFunction.Count(C.Offset(, 1).Resize(, Lc))」の部分の変数はどういった値の整数を取得する変数なのか 以上2点についてアドバイスいただけると幸いです。

  • vba 指定した日付範囲でセルの色を塗る

    急遽、エクセルVBAを組んでくれと頼まれたのでわかる方、教えていただけますか? 開始日時(A行)と終了日時(B行)があり、 開始と終了の範囲でC以降日付になっており 指定の範囲内でセルの色が塗られるいうものなのですが なにせ急ぎとVBAがほとんどわからないのでなるべくわかりやすく 教えていただけるとありがたいです。 ちなみにsheetにコードを記入するのとmoduleにコードを記入するのでは どう違うのですか?わからないまでも一応、色が塗られるところまでは できたのですがどうやってセルの時間を取得して範囲を指定すれば 良いのかなどがわかりませんどうかよろしくお願い致します。 下記は作成途中ですが・・・ Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim row As Integer Dim line As Integer row = 5 line = 9   Set objR = Range("A1").Resize(1, 4).Offset(1, 2) objR.Interior.ColorIndex = 8 End Sub

  • 日付と文字の結合と表示形式について

    sheet1A1~C1に以下の様な入力データがあるとします A1     B1      C1 2013/5/14  組立完了  出荷準備中 これらの値を結合し、「13/05/14組立完了出荷準備中」とし sheet2のA1に表示させたいのです。 以下のようにコードを入力したものの上手くいきませんでした。 Sub test4() Dim wst As Worksheet Dim wst2 As Worksheet Dim text1 As Range Dim text2 As Range Dim day1 As Date Set wst = Worksheets("sheet1") Set wst2 = Worksheets("sheet2") Set text1 = wst.Range("b1") Set text2 = wst.Range("c1") day1 = Format(wst.Range("a1"), "long date") wst2.Range("A1").Value = day1 & text1 & text2 End Sub 実行結果は『平 25/5/14組立完了出荷準備中』です。 都合上、どうしても日付の部分の表示を「平 25/5/14」から「13/05/14」に変更したく どなたかご教授お願いいたします。 ちなみに私はwin7にてExcel2003を使用しております。 宜しくお願いします。

  • 【マクロ】特定シートから値を抽出し、別シートへ反映して印刷

    【マクロ】特定シートから値を抽出し、別シートへ反映して印刷 このようなマクロを組みたいです。 作成しましたがうまく動きません。 どなたか修正していただけませんか? 【やりたいこと】 シート名1『データベース』 シート名2『通知書』 (1)『データベース』  4行目からデータベースが作成された表  C列は社員番号の列 ↓ (2)『データベース』シートのA列に『1』のフラグを立てる ↓ (3)『通知書』のセルB1に自動的に(2)で立てた行のC列の社員番号が反映され  同時に通知書シートを印刷をする。 【組んでみたマクロ】 Dim i As Integer 'カウント用変数 Dim lastrow As Integer '最終行が入る変数 i = 4 '最初に始まる行数を指定 lastrow = ActiveSheet.Range("A65536").End(xlUp).Row '最終行を取得する For i = 4 To lastrow '最終行まで繰り返す If Worksheets("データベース").Range("A" & i & "") = 1 Then 'A列に「1」があったものは以下の処理をする '別シートの特定セルを取得する Worksheets("通知書").Range("B1") = "=INDIRECT(""データベース!""&""C" & i & """)" '社員番号 '印刷する Sheets("通知書").PrintOut Else 'A列に「1」がなかったら以下の処理をする End If 'A列に何かあるかの判別終了 Next i '繰り返しの終わり。i(カウント用変数)に1を足す End Sub

専門家に質問してみよう