書籍やインターネットををみながらユーザーフォームを作成し、前後への移動、
データ修正、新規作成、削除を行うことは無事にできるようになりました。
しかし、このままでは閲覧、修正がメインとなってしまい、
検索ができない為何とかできないものかと考えています。
A列 B列 C列 D列 E列
1 A タイトル1 本文1 更新日
2 B タイトル2 本部2 更新日
3 A タイトル3 本部3 更新日
上記のようにシートに追記されていきます。
H2がデータ最終行となります。H1がユーザーフォームに表示されてる行です。
ユーザーフォームの情報は以下の通りです。
TextBox4・・・A列
ComboBox1・・・B列
TextBox1・・・C列
TextBox2・・・D列
TextBox3・・・E列
CommandButton1・・・前に移動
CommnadButton2・・・後ろに移動
CommandButton3・・・データ修正
ToggleButton1・・・新規作成
CommandButton5・・・削除
ToggleButton2・・・検索(を予定)
ユーザーフォームを起動するとSheetは非常時となります。
その中で各項目の入力や修正を行っております。
「検索」ボタンを取り付けてありますが、機能はしていません。
現在、希望している動作としまして、以下の通りです。
1.可能であればもう1つの検索ユーザーフォームを表示
検索欄は1つ、ボタンも1つ。
2.入力した検索キーワードが含まれているデータを
C列、D列から検索する。
3.最初のユーザーフォームに戻り、検索結果を確認が可能。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ユーザーフォーム上に、検索結果を表示するためのListBOXを配置した例です。
AddItemでリストに追加できます。
Private Sub CommandButton1_Click()
ListBox1.Clear'リストの内容をクリア
For i = 1 To 100
If Cells(i, 1) = 1 Then'A列が 1の場合
ListBox1.AddItem Cells(i, 2).Value'リストボックスにB列の値を追加
End If
Next
End Sub
No.1
- 回答日時:
userform1のcommandbutton1 をクリックすると
userform1のtextbox1に書いたものを検索する例です。
ここではなく標準モジュールに書いておいて
commandbuttonから呼び出すように変更することもできます。
検索でヒットするものが複数ある場合は
After:=Range("C2")ではなくAfter:=Activecell
などにしておかないと最初のものしか検索しません。
Private Sub CommandButton1_Click()
Sheets("sheet1").Range("C2:D8").Find(What:=UserForm1.TextBox1.Text, After:=Range("C2"), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=False).Activate
End Sub
この回答への補足
2つめのURLを削除されてしまいました。
今現在のコードは以下の通りです。
-----
Private Sub CommandButton1_Click()
If Cells(1, 8).Value > 2 Then
Cells(1, 8).Value = Cells(1, 8).Value - 1
End If
データ表示
End Sub
Private Sub CommandButton2_Click()
If Cells(1, 8).Value < Cells(2, 8).Value Then
Cells(1, 8).Value = Cells(1, 8).Value + 1
End If
データ表示
End Sub
Sub データ表示()
表示行 = Cells(1, 8).Value
ComboBox1.Value = Cells(表示行, 2).Value
TextBox4.Value = Cells(表示行, 1).Value
TextBox1.Value = Cells(表示行, 3).Value
TextBox2.Value = Cells(表示行, 4).Value
TextBox3.Value = Cells(表示行, 5).Value
End Sub
Private Sub CommandButton3_Click()
入力結果 = MsgBox("データを登録しますか?", vbYesNo)
If 入力結果 = 6 Then
If ToggleButton1.Value = True Then
表示行 = Cells(2, 8).Value + 1
Else
表示行 = Cells(1, 8).Value
End If
Cells(表示行, 2).Value = ComboBox1.Value
Cells(表示行, 1).Value = TextBox4.Value
Cells(表示行, 3).Value = TextBox1.Value
Cells(表示行, 4).Value = TextBox2.Value
Cells(表示行, 5).Value = TextBox3.Value
If ToggleButton1.Value = True Then
データクリア
TextBox4.Value = Cells(表示行, 1).Value + 1
Else
データ表示
End If
End If
End Sub
Private Sub CommandButton5_Click()
入力結果 = MsgBox("表示されているデータを削除しますか?", vbYesNo)
If 入力結果 = 6 Then
表示行 = Cells(1, 8).Value
Range(Cells(表示行, 1), Cells(表示行, 5)).Select
Selection.Delete shift:=xlUp
If Cells(2, 8).Value = 1 Then
ToggleButton1.Value = True
Else
If 表示行 > 2 Then
Cells(1, 8).Value = 表示行 - 1
End If
データ表示
End If
End If
End Sub
Private Sub CommandButton6_Click()
Unload Me
Application.Visible = True
End Sub
Private Sub ToggleButton1_Change()
If ToggleButton1.Value = True Then
データクリア
CommandButton1.Enabled = False
CommandButton2.Enabled = False
CommandButton5.Enabled = False
CommandButton3.Caption = "データ登録"
最終行 = Cells(2, 8).Value
If 最終行 = 1 Then
TextBox4.Value = 1
Else
TextBox4.Value = Cells(最終行, 1).Value + 1
End If
Else
CommandButton1.Enabled = True
CommandButton2.Enabled = True
CommandButton5.Enabled = True
CommandButton3.Caption = "データ修正"
Cells(1, 8).Value = Cells(2, 8).Value
データ表示
End If
End Sub
Sub データクリア()
ComboBox1.Value = "CSR"
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
End Sub
Private Sub CommandButton7_Click()
Sheets("QA").Range("C2:D8").Find(What:=UserForm1.TextBox2.Text, After:=Range("C3"), LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, MatchByte:=False, SearchFormat:=False).Activate
End Sub
Private Sub UserForm_Initialize()
Application.Visible = False
データ表示
End Sub
Private Sub UserForm_Terminate()
Application.Visible = True
End Sub
お忙しい中、ご返信をいただきましてありがとうございます。
早速、Sheets名、TextBox1を2にC2をC3に変更させていただき
設定してみたのですが、エラーとなってしまいました。
実行時エラー '91'
オブジェクト変数または With ブロック変数が設定されていません。
書籍やインターネットをみながら作ってみたコードが悪いために
このようなエラーが表示されてしまっているのでしょうか。
最初の質問の際、文字数が多いとのことで詳細まで書ききれず、
レスもつけられなかったため新規に作成したページにコードを
記載しています。
http://okwave.jp/qa4965208.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- ドライブ・ストレージ Windows10でのファイル内の文字列検索 SSDに寿命? 4 2022/07/12 03:25
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
エクセルで最初のスペースまで...
-
PowerPointで表の1つの列だけ...
-
2つのエクセルのデータを同じよ...
-
EXCELで 一桁の数値を二桁に
-
「B列が日曜の場合」C列に/...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excelで半角の文字を含むセルを...
-
エクセル(勝手に太字になる)
-
VBAで文字列を数値に変換したい
-
エクセル 文字数 多い順 並...
-
エクセルの列を範囲選択しての...
-
50人を数回、グループ分けする...
-
エクセルで、列の空欄に隣の列...
-
オートフィルターをかけ、#N/A...
-
Excel、市から登録している住所...
-
【VBA】特定列に文字が入ってい...
-
エクセルのセル内の文字の一部...
-
エクセルの並び変えで、空白セ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PowerPointで表の1つの列だけ...
-
エクセルで二つの数字の小さい...
-
エクセル 同じ値を探して隣の...
-
2つのエクセルのデータを同じよ...
-
エクセルで最初のスペースまで...
-
エクセル 文字数 多い順 並...
-
エクセルの項目軸を左寄せにしたい
-
エクセル(勝手に太字になる)
-
EXCELで 一桁の数値を二桁に
-
Excel、市から登録している住所...
-
VBAで文字列を数値に変換したい
-
「B列が日曜の場合」C列に/...
-
Excelで半角の文字を含むセルを...
-
EXCEl VBA
-
エクセルの並び変えで、空白セ...
-
VBAで、サブフォルダにある複数...
-
エクセルで文字が混じった数字...
-
エクセルの表から正の数、負の...
-
エクセルの列を範囲選択しての...
-
エクセル 時間帯の重複の有無
おすすめ情報