質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

1386閲覧

VBA 実行時エラー13の解決法

r_o_234

総合スコア15

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/06/10 06:33

前提・実現したいこと

いつもありがとうございます。
VBAで転換マクロツールを作っています。
日付を統合するモジュールを改変して、データをシート3に出力したく、プロシージャVBAを結合した所、41行目で実行時エラー13が出てしまいます。
もし原因・ヒント等がおわかりになれば教えて頂けませんでしょうか。

イメージ説明
イメージ説明

発生している問題・エラーメッセージ

実行時エラー13 型が一致しません。

該当のソースコード

Public Sub Converter() '変数定義 Dim ftype As Variant Dim fpath As Variant Dim str As Variant Dim Target As Workbook '読込モジュール ftype = "Microsoft Excelブック,*.xls?" '選択できるファイルはエクセルファイルのみ fpath = Application.GetOpenFilename(ftype, , "") 'ファイル参照ダイアログの表示,ftype=fpath Debug.Print fpath If fpath = False Then Exit Sub 'Endで強制終了はよろしくない。ダイアログでキャンセルボタンが押された場合は処理を終了します。 End If Set Target = Workbooks.Open(fpath) '抽出モジュール Target.Sheets(1).Range("G2").Copy ThisWorkbook.Sheets(2).Range("C2").PasteSpecial xlPasteValues Target.Sheets(1).Range("H2").Copy ThisWorkbook.Sheets(2).Range("C3").PasteSpecial xlPasteValues ThisWorkbook.Sheets(2).Range("C2:C3").NumberFormatLocal = "yyyymmdd" 'これはC2とC3のみです Target.Close '※開いたブックは閉じておく Set Target = Nothing '念のため、変数開放 End Sub 'Worksheets("Sheet2").Range("C2").Value = "1日" 'に日と標準を入れる 'Range("C2").NumberFormatLocal = "G/標準" 'Worksheets("Sheet2").Range("C3").Value = "2日" 'に日と標準を入れる 'Range("C3").NumberFormatLocal = "G/標準" Sub test() Dim str As Variant Dim 日付() As Variant '日付合成モジュール Dim 行数 As Long Dim i As Long 行数 = Cells(Rows.Count, 1).End(xlUp).Row ReDim 日付(行数 - 2) Columns(4).Insert For i = 0 To 行数 - 2 日付(i) = DateValue(Range("A" & i + 2) & Range("B" & i + 2) & Range("C" & i + 2)) Range("D" & i + 2).Value = 日付(i) Next i Columns("A:C").Delete Range("A1").Value = "#勤務日※" Columns(1).AutoFit ThisWorkbook.Sheets(2).Range("A2:A50").NumberFormatLocal = "yyyymmdd" 'A2からA50まで Dim sh As Worksheet 'csv保存モジュール Set sh = Worksheets(2) sh.SaveAs Filename:="C:\Work\出力先\test.csv", FileFormat:=xlCSV str = FormatYYYYMMDD(2020, 3, 1) MsgBox (str) 'yyyymmdd出力用 End Sub Public Function FormatYYYYMMDD(ByVal yyyy As Variant, ByVal mm As Variant, ByVal dd As Variant) As String FormatYYYYMMDD = Format(yyyy * 10000 + mm * 100 + dd, "00000000") End Function

試したこと

この実行時エラー13は何度も出ていて原因が不明で、
再起動していたりする内にそのうち通ったりしてしまうのでよくわかりません。
体感だと大したことのない小さな不具合がどこかで積み重なっている感じがします。
もしおわかりになれば、教えて頂けますと助かります。

補足情報(FW/ツールのバージョンなど)

Excle2016,Windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

e-watt

2020/06/10 06:48

パッと見で私自身は何も確認していないので見当違いだったらすみません。 エラーが出る式を見ると、C列には「月の日(1~31の値)」しか入っていてはいけないのではないでしょうか。(あるいは、空欄があるかもしれないけれど、とにかくA,B,C列合わせて年月日が揃う必要がある?)
r_o_234

2020/06/11 08:23

ご返信ありがとうございます。C列に「月の日(1~31の値)」を1日、2日、…という風に手入力しテストしてみたのですがエラーを吐きました。色々と試行錯誤してみます。ご協力ありがとうございます。
guest

回答1

0

ベストアンサー

C列4行目以降の値が20200401となっています。
A列B列とあわせると2020年4月20200401という文字列になり、当然日付文字列とは認識されずエラーになっているのではと思います。

投稿2020/06/10 06:54

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

r_o_234

2020/06/11 08:17

ご返信ありがとうございます。C列4行目以降を1日,2日,...として日付文字列と認識するように手入力でテストしてみたのですが、変わらず実行時エラー13が出ました。色々と試行錯誤してみます。ご協力ありがとうございます。
ttyp03

2020/06/12 04:52

DateValueに与えている値がちゃんと日付文字列になっているか確認しましたか? MsgBoxやDebug.Printで確認できるので、ただ「出来ない」とか「エラーが出る」とかいう前に確認してみてくださいね。 MsgBox Range("A" & i + 2) & Range("B" & i + 2) & Range("C" & i + 2)
r_o_234

2020/06/12 06:49

ttyp03さん ご丁寧にありがとうございます。 A:C列の4行目以下を全削除して実行した所とりあえず動作し、実行時エラー13は解決しました。 教えて頂きました、 MsgBox Range("A" & i + 2) & Range("B" & i + 2) & Range("C" & i + 2) も実行したのですが、ダイアログウィンドウに空白が表示されます。 何かがおかしい事は明白なのですが、 納期が押しているので、取り敢えずデモ版、α版を最速で仕上げる為に前進しています。 現在は新たにセルの書式設定の仕様上のエラーが発生し、これさえクリアすれば取り敢えずデモ・α版になるのでそれを解決しています。 (同時進行でVBAに強い助っ人からのレビューを聞けるようになりますのでみっちりエラー対応した本開発版も着手しています。) ご対応誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問