![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
以前、VBAでやりたい事を質問しつコードを教えて頂きました。実行した所、型が違うとのエラーで引っ掛かります。初心者のため、色々調べましたがよく分かりません。String=文字列 なので合ってると思うのですが…。
☆で、2013/12。と入力して、★で引っ掛かかります。改行出来てませんが、下記にコード載せます。
有識者の方、ご指導頂けると幸いです。
宜しくお願い致します。
Sub test()
Const fpath As String = "C:\ABC\" Dim wb1 As Workbook, wb2 As Workbook Dim sh1 As Worksheet, sh2 As Worksheet Dim ym As String Dim sdate As Date, edate As Date Dim rng As Range Dim wdate As ☆Date ym = InputBox("年月を yyyy/m の形式で入力してください" & vbCrLf & "例:2023/11")
★If ym = "" Then Exit Sub If IsDate(ym & "\1") = False Then MsgBox "日付エラー"
Exit Sub
Application.ScreenUpdating = False Application.DisplayAlerts = False sdate = DateValue(ym & "\1") edate = DateSerial(Year(sdate), Month(sdate) + 1, 1) - 1 Set rng = Range("休日") Set wb1 = Workbooks.Open(fpath & "1234.xlsx") wb1.Worksheets("原本").Copy Set wb2 = ActiveWorkbook Set sh1 = wb2.Worksheets("原本") For wdate = sdate To edate If Weekday(wdate, 2) < 6 And WorksheetFunction.CountIf(rng, wdate) = 0 Then sh1.Copy After:=wb2.Worksheets(wb2.Worksheets.Count) Set sh2 = ActiveSheet With sh2.Range("B1").Value = Day(wdate).Name = .Range("B1").Value & "日" End With End If Next wdate
wb2.Worksheets(1).Delete wb1.Close wb2.Close SaveChanges:=True, Filename:=fpath & Month(wdate) & "月分.xlsx"Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "処理終了" End Sub
No.2ベストアンサー
- 回答日時:
No1です。
全体構成等が不明のままなので、よくわからないままですが・・・
>エラー該当箇所のみVBAを作って流したところ、おっしゃる通り最後まで流れました。
であるなら、それに付随している(それ以外の)部分に原因があると推測できます。
>全分を流すと、型が違う(おそらくymの)との事で、止まってしまいます。
ご質問の部分は、コード全体の前半にあると思いますので、後半の処理を省略してみて流れるかをチェックしてみれば、原因となっている部分を特定できると思います。
(エラーが出なくなるまで、徐々に短くしてゆけば良い)
上記のような行き当たりばったりではない方法を考えるなら、まず、問題のヶ所の直前で変数ym の内容と変数の型を調べてみるとか。
例えば、
Debug.Print "変数の値:" & ym
Debug.Print "変数の型:" & VarType(ym)
等としてみれば、変数ym の値と型がイミディエイト・ウィンドウに表示されます。
(変数の型の種類は以下のURLを参照してください)
https://learn.microsoft.com/ja-jp/office/vba/lan …
※ 「型が違う」というエラーなら、ymの型が文字列(=8)以外のものになっている可能性が高いと思いますけれど・・・
No.1
- 回答日時:
こんばんは
>★で引っ掛かかります。改行出来てませんが、下記にコード載せます。
改行がどこなのかわからないので、実際のコードが不明ですが・・・
(特にIF文の改行は、位置によって意味が変わるので・・)
また、改行を気になさらないことから、質問者様にとってはコードは単なる呪文であろうことが推測できます。
「★で引っ掛かかります」というのが、単にVBAのチェックに引っかかっているのか、VBAのエラーが出ているのかも不明ですけれど・・・
勝手に改行位置を推測しましたが、以下の解釈で合っていれば、★部分でエラーなり、チェックでのエラーメッセージが出るとも思えません。
※ 改行位置が異なる場合は、構文エラーになっている可能性があります。
※ ★の近辺の部分を抜き出し、妙なところは修正してあります。
Sub PartTest()
Dim ym As String
ym = InputBox("年月を yyyy/m の形式で入力してください" & vbCrLf & "例:2023/11")
' ★ 直下の一行では、エラーは発生しないものと推測します
If ym = "" Then Exit Sub
If IsDate(ym & "/1") = False Then
MsgBox "日付エラー"
Exit Sub
End If
MsgBox "問題の処理部分を通過しました"
End Sub
早々に回答頂きありがとうございます。改行がきちんとできておらず申し訳ございませんでした。fujillin様からご回答頂いた、エラー該当箇所のみVBAを作って流したところ、おっしゃる通り最後まで流れました。ただ、全分を流すと、型が違う(おそらくymの)との事で、止まってしまいます。その時にymに入っている値をデバッグというのでしょうか?調べてみたらemptyとなっていました。理由がわからず再度苦戦しております。もし宜しければ助言頂けると幸いです。必要でしたら、流している(改行してある)コードを再度貼らせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
SQLでエラーです。
-
教えてください。FTPアップロー...
-
実行時エラー 438 の解決策をお...
-
ActiveCell.FormulaR1C1の変数
-
【VBAエラー】Nextに対するFor...
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
エラーの種類
-
エクセル関数式=ABSで#VALUE!...
-
マクロの「SaveAs」でエラーが...
-
VBA データ(特定値)のある最...
-
VB6とVB.NETでNullの扱いが違う?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
On ErrorでエラーNoが0
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
VB.net 重複チェックがしたいです
-
ActiveCell.FormulaR1C1の変数
-
ApplicationとWorksheetFunctio...
-
「実行時エラー '3167' レコー...
-
【VB.NET】 パワポ操作を非表示で
-
フランスの生年月日(jj/mm/aaaa)
-
【マクロ】 IFERROR関数をマク...
おすすめ情報