以前、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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
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
Excel関数またはVBAでの質問になります
Visual Basic(VBA)
-
12
エクセルVBAの配列について
Visual Basic(VBA)
-
13
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
14
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
15
VBA UserFormからの転記で
Visual Basic(VBA)
-
16
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
17
select case について
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ランキング
-
String""から型'Double'への変...
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
実行時エラー 438 の解決策をお...
-
文字列内で括弧を使うには
-
On ErrorでエラーNoが0
-
エクセル関数を教えてください
-
お助けください!VBAのファイル...
-
Filter関数を用いた結果、何も...
-
エクセル関数式=ABSで#VALUE!...
-
error C2664: 'LPCTSTR' に変換...
-
実行時エラー'-2147467259(8000...
-
「実行時エラー '3167' レコー...
-
ASPでこんなエラーが出たんです...
-
日付書式のString型からData型...
-
実行時エラー´5854´ 文字列型パ...
-
VBA データ(特定値)のある最...
-
ACCESSで値を代入できないとは?
-
IBM Notes9のメールをExcelVBA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報