キャンセルが出来ない | |
---|---|
[196612] キャンセルが出来ない- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ みい -(2025/06/11(18:05)) □U R L/ 以前にもお世話になりました。 下にちょっときたない上前半コードですがありまして msboxの【工事受付票をコピーします】ここでキャンセルしたいのですが キャンセルボタンを押してもそのままコードが進みます。 どこを直したらいいか教えていただきたいです。 EXCEL2019使用です。 Sub まだテスト() Dim d Dim lastNo As String, nextNo As String lastNo = Right(Sheets("控").Range("D65536").End(xlUp), 3) nextNo = LongToString(StringToLong(lastNo) + 1) With Worksheets("工事受付票") d = Format(Date, "yy") Dim rc As VbMsgBoxResult Dim ALT As VbMsgBoxResult If d = Left(Sheets("控").Range("D65536").End(xlUp), 2) Then MsgBox lastNo & "の次は" & nextNo & "です。" .Range("AD1").Value = Format(Date, "yy") & nextNo MsgBox "工事受付票をコピーします。よろしいですか?", vbYesNo + vbExclamation, "番号の確認" Else MsgBox lastNo & "の次は 001 です。" .Range("AD1").Value = Format(Date, "yy") & "001" rc = MsgBox("実行してよろしいですか?", vbYesNo + vbQuestion, "実行確認") If rc = vbYes Then MsgBox "実行しました。" '←「はい」ボタンをクリックしたときの処理。 End If If rc = vbNo Then MsgBox "中止しました。" Exit Sub End If End If Dim i Dim rowNo工事受付票 As Integer Dim rowNo控 As Integer Dim d1 As Date Range("AA2").Value = Date Dim strDate As Date Dim strNo1 As String Dim strNo2 As String Dim strNo3 As String Dim strNo4 As String Dim strUketsuke As String Dim strIrai1 As String Dim strIrai2 As String Dim strKouji1 As String Dim strKouji2 As String Dim ttrNaiyou As String strDate = .Range("aa2") strNo1 = .Range("aa1") strNo2 = .Range("ac1") strNo3 = .Range("ad1") strNo4 = .Range("ah1") strUketsuke = .Range("ad5") strIrai1 = .Range("d3") strIrai2 = .Range("m3") strKouji1 = .Range("t3") strKouji2 = .Range("ae3") strNaiyou = .Range("d5") rowNo控 = Sheets("控").Range("D65536").End(xlUp).Row + 1 Sheets("控").Activate Cells(rowNo控, 1).Value = strDate Cells(rowNo控, 2).Value = strNo1 Cells(rowNo控, 3).Value = strNo2 Cells(rowNo控, 4).Value = strNo3 Cells(rowNo控, 5).Value = strNo4 Cells(rowNo控, 6).Value = strUketsuke Cells(rowNo控, 7).Value = strIrai1 Cells(rowNo控, 8).Value = strIrai2 Cells(rowNo控, 9).Value = strKouji1 Cells(rowNo控, 10).Value = strKouji2 Cells(rowNo控, 11).Value = strNaiyou '工事受付票のコピー Sheets("工事受付票").Select Sheets("工事受付票").copy Sheets("工事受付票").Select Sheets("工事受付票").Name = "コピー" Sheets("コピー").Unprotect Password:="108615" ActiveSheet.Shapes.SelectAll Selection.Delete '工事受付票の記入箇所の消去 Windows("「テスト」工事受付票.xls").Activate Sheets("工事受付票").Select Range("AA1,AA2,AD1,D3,M3,T3,AE3,D5").Select Selection.ClearContents Range("AA2").Select 'シートの保護 Sheets("工事受付票").Protect Password:="108615" Sheets("控").Protect Password:="108615" 'シートの保存 'ActiveWorkbook.Save Application.DisplayAlerts = False Workbooks("「テスト」工事受付票.xls").Save Workbooks("「テスト」工事受付票.xls").Close Application.DisplayAlerts = True 'Next End With End Sub Function LongToString(n As Long) As String Dim ret As String, place100 As Long If n < 1000 Then ret = Format(n, "000") Else place100 = (n - 1000) \ 100 ret = Format(n - 1000 - 100 * place100, "00") & Chr(65 + place100) End If LongToString = ret End Function '文字列=>数値 Function StringToLong(s As String) As Long Dim ret As Long If IsNumeric(s) Then ret = CLng(s) Else ret = (VBA.Asc(VBA.Right(s, 1)) - 65) * 100 + CLng(VBA.Left(s, 2)) + 1000 End If StringToLong = ret End Function この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196613] Re[1]: キャンセルが出来ない- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/06/11(19:53)) □U R L/ 下のElseと同じような書き方にしたらどうですか? rc = MsgBox("工事受付票をコピーします。よろしいですか?", vbYesNo + vbExclamation, "番号の確認") If rc = vbYes Then MsgBox "実行します。" '←「はい」ボタンをクリックしたときの処理。 ElseIf rc = vbNo Then MsgBox "中止します。" Exit Sub End If |
[196614] Re[2]: キャンセルが出来ない- ■記事引用/メール受信=OFF■ □投稿者/ みい -(2025/06/12(09:43)) □U R L/ 半平太様 見ていただきありがとうございます。 コードを変更しましたら確かにキャンセルは出来ましたが 今度番号が 250001(25は2025の25です)と通番ではなく年の?初めの番号に何回もなります。 ※番号は年をこしたら西暦下二桁の0001から始まります。 通常は【控】シートにある前回の番号(D列)の続きになるようにしています。 どこを直せばいいでしょうか? 私もキャンセルは出来た事ありましたが、他が駄目になりました。 |
[196615] Re[3]: キャンセルが出来ない- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/06/12(10:25)) □U R L/ 申し訳ないですが、プログラムの中身は全く分かりません。 他の回答者のレスをお待ちください。m(__)m |
[196616] Re[4]: キャンセルが出来ない- ■ ![]() □投稿者/ みい -(2025/06/13(10:58)) □U R L/ 半平太様 大変失礼いたしました。 私のミスで、何度もコード触っていたため MsgBox "中止します。" Exit Sub End If この後の【Else】が削除されていて為作動しませんでした。 解決しました。 ありがとうございました。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
このトピックに書きこむ |
---|