![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
当方Excel2003です。
あるブックの中にシートが一つ(シート名はsheet1)あり、そのシートの中にはB2セルを起点とするデータリストがあります。
(データリストの列はB列→名前、C列→金額、D列→日付とし、日付の表示はyyyy/mm/dd、行は約400行ほどあります。)
現在、データリストのD列にマクロのオートフィルターを使用し、任意の年月の月始めから月末までのデータを抽出しようとして、以下の構文を作成中なのですが、
datStart = DateSerial("i", "j", 1)
の部分でエラーが出てしまい、「型が一致しません」と表示されてしまいます。
どういうふうに変更したら良いのか、またそもそも全体の構成がおかしい等の問題点があればその解決策をどなたかご教示いただければ幸いです。
よろしくお願いいたします。
Sub 指定月抽出()
Dim i, j As Integer
Dim datStart As Date
Dim datEnd As Date
Dim strSDate As String
Dim strEDate As String
i = Application.InputBox("年を入力してください。", Type:=1)
j = Application.InputBox("月を入力してください。", Type:=1)
If i = False Or j = False Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Worksheets("sheet1").AutoFilterMode Then
Worksheets("sheet1").AutoFilterMode = False
End If
datStart = DateSerial("i", "j", 1)
datEnd = DateAdd("m", 1, datStart)
strSDate = ">=" & Format(datStart, "yyyy/m/d")
strEDate = ">=" & Format(datEnd, "yyyy/m/d")
With ThisWorkbook.Worksheets("DATA")
.Range("B2:D" & Range("D65532").End(xlUp).Row).Select
.AutoFilter Field:=3, _
Criteria1:=strSDate, _
Operator:=xlAnd, _
Criteria2:=strEDate
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
No.2ベストアンサー
- 回答日時:
明らかに間違ってるところとか,間違いではないけど間違ってる箇所とか,不明のシート名DATEとかありますが,ざっくりこんな具合でしょうか。
sub macro1()
dim i as variant, j as variant
dim sdate as date
dim edate as date
i = application.inputbox("年", type:=1)
if i = false then exit sub
j = application.inputbox("月", type:=1)
if j = false then exit sub
sdate = dateserial(i, j, 1)
edate = dateadd("M", 1, sdate)
with worksheets("Sheet1")
.autofiltermode = false
with .range("D2:D" & .range("D65536").end(xlup).row)
.autofilter field:=1, criteria1:=">=" & sdate, operator:=xland, criteria2:="<" & edate
end with
end with
end sub
No.1
- 回答日時:
こんばんは。
ひとまず datStart = DateSerial("i", "j", 1) でエラーがでる件についてですが
こちらは ダブルクォーテーション(") を外して頂ければ解消するかと。
※DataSerial は数値、数式を入力しなければならないので、wakuwaku-san の
書き方ですと、『i という文字列』 と 『j という文字列』 を入力していたため、
エラーが発生したのではないかと思慮致します。
<ご参考まで>
DateSerial(year,month,day)
引数yearは、年を表す0~9999の範囲の 『数値または数式』 を指定します。
引数monthは、月を表す1~12の範囲の 『数値または数式』 を指定します。
引数dayは、日を表す1~31の範囲の 『数値または数式』 を指定します。
参考URL:http://officetanaka.net/excel/vba/function/DateS …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】条件に一致しない行を削...
-
【VBA】条件に一致しない行を削...
-
エクセルで空白行を削除する ...
-
VB.net
-
数値に見えるものはすべて数値...
-
Excel VBAでオートフィルタで抽...
-
マクロで最終行を取得してコピ...
-
VBAでの重複データに色付け
-
各個体に対する平均値の自動計...
-
Excel97 指定した行だけマク...
-
エクセル住所録でフラッグの個...
-
EXCEL VBA マクロ 印刷
-
Excelで、あるセルの値に応じて...
-
Excelで、マウスで範囲を選択し...
-
エクセルのVBAで指定した行数の...
-
エクセルのデータがない行には...
-
条件に合った行を削除するマク...
-
エクセルで階層図を作る方法
-
Excel マクロ 検索結果を別シ...
-
【EXCEL VBA】行の表示・非表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数値に見えるものはすべて数値...
-
マクロで最終行を取得してコピ...
-
【VBA】条件に一致しない行を削...
-
エクセルで空白行を削除する ...
-
エクセルのデータがない行には...
-
【VBA】条件に一致しない行を削...
-
VB.net
-
Excel VBAでオートフィルタで抽...
-
列から特定の文字列検索→該当以...
-
Excel97 指定した行だけマク...
-
エクセルで階層図を作る方法
-
Excel 別ブックから該当データ...
-
VBAでの重複データに色付け
-
EXCEL VBAでA列にある空白行よ...
-
マクロにて指定の文字間の文字...
-
エクセルのVBAで指定した行数の...
-
Access2003レポート:最終ペー...
-
VBAで特定の行と一つ上の行を削...
-
各個体に対する平均値の自動計...
-
Excel マクロ 検索結果を別シ...
おすすめ情報