Excel VBAについてお聞きしたいことがあります。
ユーザフォームにテキストボックスとチェックボックスを設定し、
テキストボックスには日付の入力、チェックボックスには記号を選択するように作成しました。
(チェックボックスの記号は時間で設定しており、
0:00~08:59 =A
09:00~13:00 =B
13:00~15:59 =C
16:00~19:59 =D
20:00~23:59 =E と決めています。)
表のA列には年月日と時間(昇順)、B列にはA~Eの記号が入っています。(A列参照の関数を入れています。)
例えば、テキストボックス1に11/25,テキストボックス2に12/1
チェックボックス1にE , チェックボックス2にAと入力した場合、
11/25のEまでのデータと12/1のA以降のデータを削除する方法を教えて下さい。
まずdo loopを使って11/25までのものを探すプロシージャを書いたのですが、A列に時間が入っているためかわかりませんが、どうも日付を取得できません。
念のため、私が書いたものを記載しますが、
これ以外でもいい方法があれば教えていただければ幸いです!
どうぞよろしくお願いいたします。
----------------------------------------
dim myDate as Date
sub 指定日以外削除()
myDate = textbox1.Value
i = 1
Do Until Cells(i, 1) = ""
If Cells(i, 1).Value = myDate Then
Cells(i, 1).EntireRow.Delete Shift:=xlToLeft
End If
i = i + 1
Loop
End Sub
No.3
- 回答日時:
Now()のように日付と時間が両方入っているな場合は
DateSerial関数でDateSerial(Year,Month,day)で日付が求まるよ。
YearはYear関数があるからそれを使う。Month、Dayも同じ。
何も難しくない。時刻もTimeSerial関数がある。
A1セルに=Now()とする。
Sub test02()
x = Cells(1, "A")
d = DateSerial(Year(x), Month(x), Day(x))
MsgBox d
End Sub
dには2009/12/2の日付シリアル値(正整数)が入る。
日付書式で2009/12/2に見えている。
時刻も同じ。
この回答への補足
あ~なるほどです。
VBAの関数はまだまだ全然です。。。
勉強したいと思います。
回答くださってありがとうございます!
参考にさせていただきます。
また何かあったらどうぞよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんばんは。
>チェックボックス1にE , チェックボックス2にAと入力した場合、
チェックボックスは、オン・オフだと思いますから、これはどういうことか良く分かりません。
myDate = textbox1.Value このままですと、うまくありません。
'-------------------------------------------
Sub 指定日以外削除()
Dim myDate1 As Variant
Dim myDate2 As Variant
Dim tmp As Variant
Dim i As Long
myDate1 = TextBox1.Value
myDate2 = TextBox2.Value
'日付が入っていないとき
If myDate1 = "" Or myDate2 = "" Or _
Not (IsDate(myDate1) And IsDate(myDate2)) Then
MsgBox "日付が入っていません。", vbExclamation
Exit Sub
Else
'日付に変換
myDate1 = CDate(TextBox1.Value)
myDate2 = CDate(TextBox2.Value)
End If
'もし、日付の大小を逆に入れ違えたとき
If myDate1 < myDate2 Then
tmp = myDate2: myDate2 = myDate1: myDate1 = tmp
End If
''-------------------------------------------削除実行
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If VarType(Cells(i, 1).Value) = vbDate Then
If Fix(Cells(i, 1).Value2) >= myDate2 And Fix(Cells(i, 1).Value2) <= myDate1 Then
Cells(i, 1).EntireRow.Delete
End If
End If
Next
Application.ScreenUpdating = True
End Sub
チェックボックスとオプションボタンを設定しようと思ったのでした。。。
すごく詳しく書いてくださってありがとうございます!!
参考にさせていただきます☆
また何かあったらどうぞよろしくお願いいたします。
No.1
- 回答日時:
とりあえず年月日と時間が入っているセルと年月日を比較しても=が成立しないので
年月日と時間が入っているセルを年月日だけにします。
>If Cells(i, 1).Value = myDate Then
If int(Cells(i, 1).Value) = myDate Then
>Cells(i, 1).EntireRow.Delete Shift:=xlToLeft
行を削除するのだから
Cells(i, 1).EntireRow.Delete Shift:=xlup
だと思います。(処理には関係ないけど)
あ、凡ミスを。。。
ご指摘ありがとうございます!
ありがとうございます!!
参考にさせていただきます☆
また、何かあればゼヒよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
VisualBasic6.0のFormat関数で...
-
エクセルのVBAで日付を検索し転...
-
DataGridViewでyyyy/MM/dd
-
VB6.0 のformat関数について
-
3人のじゃんけんのプログラム
-
週間カレンダー vbscript
-
指定した日付が、その月の第何...
-
【Excel VBA】条件に合った行の...
-
Laravelクエリビルダにてウィン...
-
今日より前の書き方 マクロ
-
htmlで日付表示。三日後の日付...
-
VB.NET 日付設定
-
該当の日付以外を消去するプロ...
-
SqlCommandBuilder 使用時のサ...
-
excelのVBAについて、以下のコ...
-
ユーザーフォームのラベルに日...
-
完全一致の検索
-
C++で日付判定を行いたい!!
-
JSPからYYYYMMDDで日付入力する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
人をはめた人は 自分に返ってく...
-
DataGridViewでyyyy/MM/dd
-
エクセルのVBAで日付を検索し転...
-
ユーザーフォームのラベルに日...
-
VisualBasic6.0のFormat関数で...
-
コンボボックスに日付を表示する
-
テキストボックスにカレンダー...
-
1本あたり○円と表示する時どの...
-
指定した日付が、その月の第何...
-
VBAで当月の1日を表示するには...
-
VBA 日付・時刻の判別 時刻を認...
-
今日より前の書き方 マクロ
-
システム日付とは?
-
テキストボックスに今日の日付...
-
DateTimePickerを西暦表示にす...
-
JSPからYYYYMMDDで日付入力する
-
C++で日付判定を行いたい!!
-
ExcelVBAでSQLサーバの日付時刻...
-
【Excel VBA】条件に合った行の...
おすすめ情報
