
以前、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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBAエラー】Nextに対するFor...
-
インポート時のエラー「データ...
-
VBA Find でオートメーションエ...
-
ExcelVBAで「SubまたはFunction...
-
VBAでfunctionを利用しようとし...
-
VBのsstab(MicroSoft Tabbed D...
-
エクセルVBAでApplication.Sum...
-
ACCESS DAO で不要なテーブルの...
-
フランスの生年月日(jj/mm/aaaa)
-
エクセル関数式=ABSで#VALUE!...
-
ACCESSで値を代入できないとは?
-
VB2010でデータグリッドビュー...
-
BASP21でメールが送信できない
-
ASPでこんなエラーが出たんです...
-
【VBA】ワークブックを開く時に...
-
【VB.NET】 パワポ操作を非表示で
-
【VBA】findの検索条件における...
-
exitとreturnの使い分け
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報