VBA素人です。教えてください。
添付シートのようなデータがあるとします。
ユーザーフォームにテキストボックスを作成し、
(1)シート内の型式を型式BOXに手入力で入れる
(2)良品数を手入力で入れる
(3)日付を手入力で入れる(初期設定はDateをかえす)
(1)~(3)を入力し、入力コマンドボタンで型式と日付がFINDするセルに
良品数を入れるコードを下記作成しました。
シート内に対象の型式、日付があれば、うまく作動するのですが、
型式、日付両方が無い場合、もしくはどちらか片方が無い場合は、
うまく作動しません。
おそらく型式FIND~IF、日付FIND~IFの使い方が悪いと思います。
型式がシート内に無ければ、型式エラーとしマクロを抜ける。
型式があり、日付が無ければ、日付エラーでマクロを抜けるコードを教えてください。
なお、型式を手入力で入れていますが、シート内の("B:B")セルを選択すると自動で型式テキストボックスに入れる方法もご教示下さい。
Private Sub UserForm_Initialize()
型式BOX = ""'テキストボックス
良品BOX = ""'テキストボックス
日付BOX = Date'テキストボックス
型式BOX.SetFocus
End Sub
Private Sub 入力_Click()
Application.ScreenUpdating = False
Application.EnableEvents = False
If Len(型式BOX.Value) = 0 Then
MsgBox "型式が未選定です"
Cancel = True
ElseIf Len(良品BOX.Value) = 0 Then
MsgBox "良品が未入力です"
Cancel = True
ElseIf Len(日付BOX.Value) = 0 Then
MsgBox "日付が未入力です"
Cancel = True
Else
Dim a As Variant
a = 型式BOX.Value
Dim b As Date
b = 日付BOX.Value
On Error Resume Next
Columns("B:B").Select
ActiveSheet.Cells.Find(a, , , xlWhole, xlByRows, xlNext, False).Select
X = ActiveCell.Row
If Err = 91 Then
MsgBox (prompt) & a & "の型式はありません", _
(vbOKOnly + vbExclamation), ("型式検索結果")
Err.Clear
End If
On Error Resume Next
Rows("1:1").Select
ActiveSheet.Cells.Find(b, , , xlWhole, xlByColumns, xlNext, False).Select
Y = ActiveCell.Column
If Err = 91 Then
MsgBox (prompt) & b & "の日付はありません", _
(vbOKOnly + vbExclamation), ("日付検索結果")
Err.Clear
End If
Cells(X, Y) = 良品BOX.Value
End If
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
検証はしてませんが、こんな感じで
Private Sub 入力_Click()
Application.ScreenUpdating = False
'Application.EnableEvents = False
If 型式BOX.Value = "" Then MsgBox "型式が未選定です": Exit Sub
If 良品BOX.Value = "" Then MsgBox "良品が未入力です": Exit Sub
If 日付BOX.Value = "" Then MsgBox "日付が未入力です": Exit Sub
On Error Resume Next
x = ActiveSheet.Columns("B:B").Find(型式BOX.Value, , , xlWhole, xlByRows, xlNext, False).Row
If x = "" Then
MsgBox (prompt) & 型式BOX.Value & "の型式はありません", _
(vbOKOnly + vbExclamation), ("型式検索結果")
Exit Sub
End If
y = ActiveSheet.Rows("1:1").Find(CDate(日付BOX.Value), , , xlWhole, xlByColumns, xlNext, False).Column
If y = "" Then
MsgBox (prompt) & 日付BOX.Value & "の日付はありません", _
(vbOKOnly + vbExclamation), ("日付検索結果")
Exit Sub
End If
ActiveSheet.Cells(x, y) = 良品BOX.Value
End Sub
参考まで
この回答への補足
遅くなりました。
うまく動作しそうです。
なお、現在型式を手入力で入れていますが、
シート内の("B:B")セルを選択すると
自動で型式テキストボックスに入れる方法もご教示下さい。
よろしくお願いいたします。
No.2
- 回答日時:
>なお、現在型式を手入力で入れていますが、
>シート内の("B:B")セルを選択すると
>自動で型式テキストボックスに入れる方法もご教示下さい。
excel97の使用を考えているのならば
excel97はモードレスに対応していないので、以下の方法しかないよ
userformを表示する前にセルを選択しておいたものを
表示時にtextboxへ入力する
'userformモジュールへ
Private Sub UserForm_Initialize()
If ActiveCell.Column = 2 Then
型式BOX = ActiveCell.Value 'テキストボックス
Else
型式BOX = "" 'テキストボックス
End If
良品BOX = "" 'テキストボックス
日付BOX = Date 'テキストボックス
型式BOX.SetFocus
End Sub
以上
参考まで
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
JSPからYYYYMMDDで日付入力する
-
テキストボックスに今日の日付...
-
VBA 日付・時刻の判別 時刻を認...
-
【VBA】土日をスキップして日付...
-
VBA のMSG の入力部分で日付を...
-
ふと、気になる事が… 中年以降...
-
VisualBasic6.0のFormat関数で...
-
VBA:日付をシリアル値にできる...
-
ユーザーフォームのラベルに日...
-
3人のじゃんけんのプログラム
-
【Excel VBA】条件に合った行の...
-
VBA 日付、未来の日付はエラー...
-
DateTimePickerを西暦表示にす...
-
VBAの質問になります 行の非表示
-
システム日付とは?
-
パソコンの日付変更したら、ヤ...
-
エクセルのVBAで日付を検索し転...
-
日付を操作したい
-
VBAで当月の1日を表示するには...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
ユーザーフォームのラベルに日...
-
VBAの質問になります 行の非表示
-
エクセルのVBAで日付を検索し転...
-
VisualBasic6.0のFormat関数で...
-
DataGridViewでyyyy/MM/dd
-
3人のじゃんけんのプログラム
-
システム日付とは?
-
コンボボックスに日付を表示する
-
今日より前の書き方 マクロ
-
【VBA】土日をスキップして日付...
-
エクセルVBAで機械の稼働時間を...
-
VBA 日付、未来の日付はエラー...
-
DataGridViewの和暦表示について
-
VBAで当月の1日を表示するには...
-
「eclipseで作るカレンダー(ス...
-
テキストボックスにカレンダー...
-
ExcelVBAでSQLサーバの日付時刻...
-
【Excel VBA】条件に合った行の...
-
VBAのapplication.ontime メソ...
おすすめ情報