• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA ! 教えて下さいっ)

VBAで見積書の日付を作成する方法

siitakekonbuの回答

回答No.1

Range("A1").Valueの日付と Range("A2").Value を比較してのパターンが必要ですね。 IFだと長くなりすぎるので、配列に変えてみられてはどうでしょうか?

cocoruru1211
質問者

お礼

早々のご対応ありがとうございます。 IFからSelect Caseへ変えてスマートになりました。 ご指摘、ありがとうございます。これからも宜しくお願いします。

関連するQ&A

  • 印刷後のVBAの実行 (2)

    Private Sub Workbook_BeforePrint(Cancel As Boolean)   If ActiveSheet.Name = "Sheet1" Then     If Range("D6").Value = "" Then       Cancel = True       MsgBox ("名前を入力してください")       Range("D6").Select       Exit Sub     End If   Else     If ActiveSheet.Name = "Sheet2" Then       If Range("C11").Value = "" Then         Cancel = True         MsgBox ("受付時間を入力してください")         Range("C11").Select         Exit Sub       End If     Else              Exit Sub     End If   End If   ActiveSheet.Range("A70:Y70").Copy   If Worksheets("Sheet3").Range("A1").Value = "" Then     Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues   Else     Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _       Paste:=xlPasteValues   End If   Application.CutCopyMode = False   ActiveSheet.Range("A1").Select End Sub 先日、上記のコードを回答者の方から教えてもらい、とても助かっていますが sheet1のD5に「不要」という文字が入っていた場合、 sheet3への貼り付け(23~30行目の作業)をキャンセルして、最後にsheet1のA1を選択するようにはどの様にしたらいいでしょうか?

  • 印刷後のVBAの実行 (3)

    Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "Sheet1" Then If Range("D6").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("D6").Select Exit Sub End If Else If ActiveSheet.Name = "Sheet2" Then If Range("C11").Value = "" Then Cancel = True MsgBox ("受付時間を入力してください") Range("C11").Select Exit Sub End If Else Exit Sub End If End If If Worksheets("Sheet1").Range("D5") = "不要" Then GoTo P1 ActiveSheet.Range("A70:Y70").Copy If Worksheets("Sheet3").Range("A1").Value = "" Then Worksheets("Sheet3").Range("A1").PasteSpecial Paste:=xlPasteValues Else Worksheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If Application.CutCopyMode = False P1: ActiveSheet.Range("A1").Select End Sub sheet1のD5に「不要」と入っていたら 24~33行目の作業がキャンセルになりますが sheet2のD5にも「不要」と入っていたら、同じ様にキャンセルできる様に出来ますでしょうか? ご回答お願いします

  • excel ユーザーフォームでシートごとに転記2

    先日ユーザーフォームへの転記について質問させていただきました。 ご回答いただき、ありがとうございました。 今度はオプションボタンで選択したときに、シートごとに転記する方法を 教えていただけますでしょうか。 ユーザフォーム上で、オプションボタンを選択。 OptionButton1・・・シート1へ転記 OptionButton2・・・シート2へ転記 これをOKボタンを押したときに転記するようにしたいと思っています。 Private Sub OK_Click() Dim CLrow As Long Dim KYrow As Long CLrow = Worksheets("Sheet1").Range("A65536").End(xlUp).Row KYrow = Worksheets("Sheet2").Range("A65536").End(xlUp).Row If OptionButton1.Value = True Then Worksheets("Sheet1").Range("A" & CLrow).Value = .TextBox1.Value ElseIf OptionButton2.Value = True Then Worksheets("Sheet2").Range("A" & KYrow).Value = .TextBox1.Value End With End Sub ここまでやってみたのですが「参照が不正または不完全です」 と出てしまいます。 どなたかご教示願います。 よろしくお願いします。

  • VBAについて

    現在マクロ勉強中です。 教えて頂きたいのは、登録ボタンで指定セルの台帳への転記する方法です。 Private Sub cmdToroku_Click() Dim myrow As Integer Option Explicit With ActiveSheet If .Range("A4").Value = "" Then myrow = 1 Else myrow = .Range(Cells(.Rows.Count, 1).End(xlUp).Address).Row + 1 End If .Cells(myrow, 1).Value = TextBox1.Value End With End Sub 上記ですと、開いているシートのA1に入力されてしまいます。 別シートへ転記したい場合どのあたりを修正すればよいのでしょうか? お力お借りできれば幸いです。

  • 転記の仕方

    Sub 入力する() If AIRシート.Range("A1").Value = "A" Then Dim AIRシート最終行 As Long AIRシート最終行 = AIRシート.Range("A65536").End(xlUp).Row + 1 If AIRシート最終行 = 30 Then MsgBox "AIRシートがいっぱいです " Exit Sub Else End If AIRシート.Range("A" & AIRシート最終行).Value = 入力シート.Range("A1").Value AIRシート.Range("B" & AIRシート最終行).Value = 入力シート.Range("B1").Value MsgBox "入力完了" Else End If End Sub ●質問● 今、"入力シート"のA1に『A』と入力しマクロを実行すると"AIRシート"のA列、B列に入力シートのA1、B1の値が次々と転記されるようにしてるのですが、これを入力シートのA1だけではなく、A1~A3まで入力することが出来、実行すると全てが転記できるようにしたいのですが。 ※A2,A3は入力しないときもあります。 If AIRシート.Range("A1").Value = "A" Then           ↓          ("A1:A3") みたいな感じでです。

  • エクセル VBA for文について

    再び失礼します。 昨日VBAを始めた初心者です。 1、チェックボタン17個にそれぞれ変数を設定 2、2つだけチェックを入れると仮定して、実行ボタンを押したときに チェックが入っている2つの中で変数の大きいものをMax、小さいものをMinとしてシートに出力したいのですが、”ここ”と書いてあるところに Me("hensuu" & n). hensuu & n など入れてみたのですがエラーになります。 くだらないミスだと思いますがよくわかりません。 どなたかご教授お願いします。 Private Sub CommandButton2_Click() If Check1.Value = True Then hensuu1 = "9" End If If Check2.Value = True Then hensuu2 = "8" End If If Check3.Value = True Then hensuu3 = "7" End If If Check4.Value = True Then hensuu4 = "6" End If If Check5.Value = True Then hensuu5 = "5" End If If Check6.Value = True Then hensuu6 = "4" End If If Check7.Value = True Then hensuu7 = "3" End If If Check8.Value = True Then hensuu8 = "2" End If If Check9.Value = True Then hensuu9 = "1" End If If Check11.Value = True Then hensuu10 = "1/2" End If If Check11.Value = True Then hensuu11 = "1/3" End If If Check12.Value = True Then hensuu12 = "1/4" End If If Check13.Value = True Then hensuu13 = "1/5" End If If Check14.Value = True Then hensuu14 = "1/6" End If If Check15.Value = True Then hensuu15 = "1/7" End If If Check16.Value = True Then hensuu16 = "1/8" End If If Check14.Value = True Then hensuu17 = "1/9" End If Dim n As Long Dim Max As Long Dim Min As Long For n = 1 To 17 If Me("Check" & n).Value = True Then Max = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n For n = Max To 17 If Me("Check" & n).Value = True Then Min = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n Worksheets("Sheet1").Range("A1") = Min Worksheets("Sheet1").Range("B1") = Max MsgBox hensuu End Sub

  • VBA シート上の転記について

    If 入力シート.Range("A4").Value = "会社" Then Dim 会社シート最終行 As Long 会社シート最終行 = 会社シート.Range("AA65536").End(xlUp).Row + 1 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("A4").Value 会社シート.Range("A" & 会社シート最終行).Value = 入力シート.Range("B4").Value VBAで上記のように入力していて、これに会社シートのA行を別のシートに転記したい場合どういう入力方法になるのでしょうか。 同じ公式で会社シートの所をsheet1、入力シートの所を会社シートと入力したのですがまったく反映されませんでした。 VBAを始めたばかりなので試行錯誤しながらしています。

  • この場合エクセルVBAでどう書けばいいでしょうか?

    あるシートのH列で、H21からH46のあいだで"False"がある行を非表示にしたいのです。 下記の冗長なマクロでもそうなりますが、For Nextというのを使うともっと簡潔に記述できると思うのですが、初心者のためよくわかりません。ご教示ください。 また、下記の式はシートが保護されていると働きませんが、保護したシートでも動く方法があればそれもあわせて教えていただけると幸いです。 エクセルは95です。 Sub 空白行非表示() G% = Sheets("見積書").Range("H48").Value With Sheets("見積書") Rows("19:47").RowHeight = G% If Range("H21") = False Then Rows("21").EntireRow.Hidden = True End If If Range("H22") = False Then Rows("22").EntireRow.Hidden = True End If If Range("H23") = False Then Rows("23").EntireRow.Hidden = True End If If Range("H24") = False Then Rows("24").EntireRow.Hidden = True End If 途中、繰り返しのため省略 If Range("H42") = False Then Rows("42").EntireRow.Hidden = True End If If Range("H43") = False Then Rows("43").EntireRow.Hidden = True End If If Range("H44") = False Then Rows("44").EntireRow.Hidden = True End If If Range("H45") = False Then Rows("45").EntireRow.Hidden = True End If If Range("H46") = False Then Rows("46").EntireRow.Hidden = True End If End With End Sub

  • VBA beforeprintについて

    Private Sub Workbook_BeforePrint(Cancel As Boolean) If ActiveSheet.Name = "sheet1" Then If Range("M1").Value = "" Then Cancel = True MsgBox ("名前を入力してください") Range("M1").Select Exit Sub End If ElseIf ActiveSheet.Name = "sheet2" Then If Range("A47").Value = 文字 Then Cancel = True    MsgBox ("日付を入力してください") Range("A47").Select Exit Sub End If Exit Sub End If End Sub 上記は印刷をする前に実行されるコードですが、上記を実行して印刷をした後に自動で下記のVBAを実行したいのですが Sub データー取り込み() ActiveSheet.Range("B2000:Z2000").Copy ChDir "\\データーA\データーB\データーC\データーD" Workbooks.Open Filename:="\\データーA\データーB\データーC\データーD\データーシート1.xls" Sheets("顧客データー").Select If Worksheets("顧客データー").Range("B18").Value = "" Then Worksheets("顧客データー").Range("B18").PasteSpecial Paste:=xlPasteValues Else Worksheets("顧客データー").Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial _ Paste:=xlPasteValues End If ActiveWorkbook.Save ActiveWindow.Close End Sub 上記のコードと下記のコードをどのように絡めたらいいのかわかりません。アドバイスお願いします。

  • エクセルVBA抽出がうまく出来ません

    エクセル2013VBA初心者です。 入力シートからDBシートへ、DBシートから印刷シートへのデータ転記と印刷、入力内容のクリアまでは出来るようになりました。 DBシートの検索を行い、記録内容を入力シートに転記する抽出を行いたいのですが、下記構文を書いたところで問題が発生しました。 If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then  でとまります。メッセージは ‘Range’メソッドは失敗しました:‘Workshieet’オブジェクトというものです。 やろうとしていることは、入力シートに設けた“E12”と”G12”の二つの検索項目をキーにDBシートの行を特定し、この行の内容を入力シートに反映しようということです。 入力シートの検索項目“E12”、 ”G12”はそれぞれDBシートのA列、B列に格納されている項目で、年度と連番です。サンプルとして入力シート"C5"に抽出しようとしているDBシートD列は申請者名です。 恐れ入りますがよろしくご教示頂きたく、お願い申し上げます。 Sub DBシートから力情報を抽出する () Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim i As Long Dim j As Long Dim k As Long Set Sh1 = Worksheets("入力") Set Sh2 = Worksheets("DB") j = Sh1.Range("E12").Value k = Sh1.Range("G12").Value With Sh2 For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row If Sh2.Range("A & i").Value = j And Sh2.Range("B & i").Value = k Then Sh1.Range("C5").Value = Sh2.Range("D & i").Value End If Next  End With End Sub