以前、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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
-
4
Excel VBAでの数値の計算についておしえてください
Visual Basic(VBA)
-
5
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
6
月ごとに作成している日報ファイルを、VBAでコピーし日付ごとのシートにしたい
Visual Basic(VBA)
-
7
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
8
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
9
引数に数値、文字列の混在
Visual Basic(VBA)
-
10
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
11
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
12
Excel関数またはVBAでの質問になります
Visual Basic(VBA)
-
13
【ExcelVBA】VBA実行でダイアログメッセージを無視する方法はありますか?
Visual Basic(VBA)
-
14
エクセルVBAの配列について
Visual Basic(VBA)
-
15
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
16
VBA UserFormからの転記で
Visual Basic(VBA)
-
17
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
18
VBA一覧取得 再投稿
Visual Basic(VBA)
-
19
VBAのコードを教えてください
Visual Basic(VBA)
-
20
VBA 二つのブックをうまく扱えないでいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBA データ(特定値)のある最...
-
コンボボックスの特定項目だけ...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ExecuteNonQueryメソッドの戻り値
-
【VBA】ワークブックを開く時に...
-
ActiveCell.FormulaR1C1の変数
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー'-2147467259(8000...
-
オブジェクト型の変数にフォー...
-
-2147418107 (&H80010005)
-
WinsockコントロールのErrorイ...
-
【Access】Excelインポート時に...
-
Excel vbaについての質問
-
VBAなんですが・・・うまく計算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
マクロで"#N/A"のエラー行を削...
-
VBAでfunctionを利用しようとし...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
エクセル関数を教えてください
-
On ErrorでエラーNoが0
-
お助けください!VBAのファイル...
-
VBA データ(特定値)のある最...
-
【VBA】ワークブックを開く時に...
-
インポート時のエラー「データ...
-
実行時エラー'-2147467259(8000...
-
マクロの「SaveAs」でエラーが...
-
WindowsでのPythonの挙動について
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
エクセルVBA 「On Error GoTo...
-
Filter関数を用いた結果、何も...
-
ACCESSで値を代入できないとは?
おすすめ情報