Excelでセル検索したセルの色をテキストボックスに表示

このQ&Aのポイント
  • Excelでセルを検索し、検索結果のセルの色をテキストボックスに表示したいです。
  • 検索結果のセルの色をテキストボックスに表示する方法を教えてください。
  • ExcelのVBAを使用して、セルの色をテキストボックスに表示する方法について教えてください。
回答を見る
  • ベストアンサー

Excelでセル検索したセルの色をテキストボックスに表示

セル検索した結果をテキストボックスに表示する時、文字は表示できましたが、セルの色もテキストボックスに表示したいのですが、何処を修正したらいいのか分かりません。 教えてください。 宜しくお願いします。 Sub AAA() strMoji$ = UserForm1.TextBox1.Text If UserForm1.TextBox1.Text = "" Then MsgBox "検索条件を入力してください。", 48 Exit Sub End If On Error GoTo Fail Worksheets("Sheet1").Range("a:a").Find(What:=strMoji, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ ).Activate lonNUM& = Selection.Row UserForm1.TextBox2.Text = Cells(lonNUM, 2).Value UserForm1.TextBox3.Text = Cells(lonNUM, 3).Value UserForm1.TextBox4.Text = Cells(lonNUM, 4).Value UserForm1.TextBox5.Text = Cells(lonNUM, 5).Value UserForm1.TextBox6.Text = Cells(lonNUM, 6).Value UserForm1.TextBox7.Text = Cells(lonNUM, 7).Value UserForm1.TextBox8.Text = Cells(lonNUM, 8).Value Exit Sub Fail: MsgBox "該当なし", 48 End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

.Interior.ColorIndex でカラーバレットのインデックス番号 .Interior.Color でカラーコード が得られますが、 red などの色名は得られません。 テキストボックスの背景色をセルの塗りつぶし色と同じにするなら TextBox2.BackColor = Cells(lonNUM, 2).Interior.Color でイイと思います。

j3j355
質問者

お礼

色と文字の表示方法が分かりました。 有難うございました。 もう完璧です。

j3j355
質問者

補足

早速のご回答有難うございました。 セルの色をそのままテキストボックスに表示でいいのですが、文字が消えてしまったのですが、どうすれば色と一緒に文字を表示できるのでしょうか? 教えてください。 宜しくお願いします。

その他の回答 (1)

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.2

こんにちは。コーディングスタイルは人それぞれなので 参考になるかどうかわかりませんが、 Dim strmoji As String Dim i As Long Dim rng As Range '■追加 With UserForm1 strmoji = .TextBox1.Text If Len(strmoji) = 0 Then MsgBox "検索条件を入力してください。", 48 Exit Sub End If Set rng = Worksheets("Sheet1").Columns("a").Find(What:=strmoji, _ LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not rng Is Nothing Then For i = 2 To 8 .Controls("TextBox" & i).Text = rng.Offset(, i - 1).Value Next i .TextBox9.Text = rng.Interior.ColorIndex '■ .TextBox9.BackColor = rng.Interior.Color '■ Else MsgBox "該当なし", 48 End If End With Set rng = Nothing >セルの色もテキストボックスに表示したい についてはNo.1さんのレスで解決ですので、そちらをご優先なさってください。 私のはあくまで蛇足の参考コードです^ ^

j3j355
質問者

お礼

早速のご回答有難うございました。 このように短くできるんですね!

関連するQ&A

  • Excelで検索結果表示の修正

    下記のマクロでA列だけ検索できるようにしたいのですが、どこを修正したらいいのか教えてください。 Private Sub CommandButton1_Click() AAA End Sub Sub AAA() strMoji$ = UserForm1.TextBox1.Text If UserForm1.TextBox1.Text = "" Then MsgBox "検索条件を入力してください。", 48 Exit Sub End If On Error GoTo Fail Cells.Find(What:=strMoji, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ ).Activate lonNUM& = Selection.Row UserForm1.TextBox2.Text = Cells(lonNUM, 2).Value UserForm1.TextBox3.Text = Cells(lonNUM, 3).Value Exit Sub Fail: MsgBox "該当なし", 48 End Sub Private Sub UserForm_Click() End Sub

  • Excelでセルの検索結果をテキストボックスに表示

    先日、この内容の回答が来たのですが、いろいろテストしていたら、検索ボックスに入力して1回目は検索できるのですが、続けて次の検索をしようテキストボックスに入力してボタンを押しても以前の内容で検索されてしまいます。 どこを修正すれば良いのか教えてください。 UserForm1に、検索条件を入れるTextBox4、 該当した行のB,C,D列表示用の、TextBox1、TextBox2,TextBox3の3つ(計4つ)を設けます。 コマンドボタンを1つ(Captionは「検索・次検索」)設けます。検索・次検索ボタンです。 標準モジュールに Public ac As Range Public startaddr As String 変数の次ステップ(イベント)への受け渡し用です。 UserForm1のコマンドボタンのクリック・イベント・プロに Private Sub CommandButton1_Click() Dim r As Range If ac Is Nothing Then d = Range("A65536").End(xlUp).Row With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .Find(what:=TextBox4) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate MsgBox ac.Address startaddr = ac.Address Exit Sub End With Else MsgBox ac.Address d = Range("A65536").End(xlUp).Row MsgBox d With ActiveSheet.Range(Cells(1, "A"), Cells(d, "A")) Set r = .FindNext(ac) rr = r.Row TextBox1.Text = Cells(rr, "B") TextBox2.Text = Cells(rr, "C") TextBox3.Text = Cells(rr, "D") Set ac = r r.Activate If r.Address = startaddr Then TextBox1.Text = "終わり" Exit Sub End With End If End Sub

  • エクセル VBAのチェックボックスについて

    お読みくださり、ありがとうございます。 エクセル初心者でございます。 エクセルのマクロなのですが、 お詳しい方、是非教えて欲しいです!汗 調子に乗って入力フォームなるものを作りました。 入力フォームの中にて、チェックボックスで「ある」「なし」の項目を入れてみたのですが、チェックしていないのに、値が入る現象が起きています汗 以下、素人が書いたコードを恥を承知で記載させていただきます。 Private Sub CheckBox1_Click() If CheckBox1.Value = True Then OK = "○" End If End Sub Private Sub CheckBox2_Click() If CheckBox2.Value = True Then NO = "×" End If End Sub Private Sub UserForm_Click() End Sub '以下のコードは、登録ボタンがクリックされたときの処理! Private Sub 登録ボタン_Click() If TextBox1.Text = "" Then MsgBox "グッズ名を入力してください。" Exit Sub End If If TextBox2.Text = "" Then MsgBox "アプローチ先を入力してください。" Exit Sub End If With Worksheets("協賛グッズ") With Cells(Rows.Count, 2).End(xlUp) .Offset(1, 0).Value = TextBox1.Text .Offset(1, 1).Value = mori .Offset(1, 2).Value = mori2 .Offset(1, 3).Value = TextBox2.Text .Offset(1, 5).Value = TextBox3.Text .Offset(1, 6).Value = TextBox4.Text .Offset(1, 7).Value = TextBox5.Text .Offset(1, 8).Value = TextBox6.Text End With End With TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" TextBox6.Text = "" CheckBox1.Value = False CheckBox2.Value = False End Sub 以上です。 おかしなところ満載かと思いますが、 チェックを入れた項目だけ値を入れたいと考えております。 おわかりになるかたおりましたら何卒お助けください汗 よろしくお願いいたします。

  • エクセルVBA テキストボックス処理?

    エクセル2000 VBAにて入力フォームの テキストボックス1に下記を書き込んだのですが カーソルがテキストボックス1にあるとき 他の処理(コマンドボタン、マウスにて他のテキストボックスに カーソルを移すなど)が出来ません。 フォームを閉じるときもメッセージボックスのコメントがでます。 どの処理を行ってもテキストボックス1の処理が終わってからしか 行わないようなのですが??? Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim i As Integer '品番確認用 For i = 3 To 100 If Sheets("品番マスタ").Cells(i, 1) = TextBox1.Text Then Label1 = Sheets("品番マスタ").Cells(i, 2).Value 'メーカー Label2 = Sheets("品番マスタ").Cells(i, 3).Value 'タイプ Label3 = Sheets("品番マスタ").Cells(i, 4).Value '品名 Label4 = Sheets("品番マスタ").Cells(i, 5).Value '内容量 Label6 = Sheets("品番マスタ").Cells(i, 8).Value '背番号 Exit Sub End If Next i MsgBox "品番がありません" TextBox1 = "" Cancel = True End Sub どのように変更すればいいでしょうか?

  • エクセル2003のVBAで、ユーザーフォームにあるテキストボックスに入力制限をつけたいのですが

    エクセル2003のVBAで、ユーザーフォーム上にあるテキストボックスに入力制限をつけようとしています。 エクセルのセル13列目にdeg値 0 0.5 1 1.5 2 ・ ・ ・ があります。 ここにない値を入力するとエラーメッセージを表示させます。 下記のコードで、小数点を入力した瞬間(例えば「1.」)にエラーメッセージが表示されてしまいます。 どう修正したらよいか、どなたか分かりませんでしょうか? よろしくお願いいたします。 Private Sub TextBox21_Change() For i = 7 To 1446 If TextBox21.Value = ThisWorkbook.Sheets(\"default\").Cells(i, 13).Value Then Exit For Next i If i = 1447 Then MsgBox \"deg値と一致しません。補正値を入れなおしてください。\" TextBox21.Text = \"\" End If End Sub

  • Excel VBA テキストボックスを検索

    テキストボックス3に数値を入力し ExcelのA列にあるか検索をかける。 ある場合は、B列の同じ行に 「みーつけた!」と入力。 その設定で組んでみたのですが、 テキストボックス3にデータを6桁入力しようとすると 6桁目にオーバーフローエラーが出ます。 このプログラムの何処がおかしいのでしょうか? Private Sub TextBox3_Change() Dim Number As Integer If TextBox3.Value <> "" Then '空じゃない場合 Number = TextBox3.Value Call 検索(Number) MsgBox TextBox3.Value End If End Sub Sub 検索(ByVal Number As Variant) Dim FoundCell As Range Set FoundCell = Range("A:A").Cells.Find(What:=Number, lookat:=xlPart) If FoundCell Is Nothing Then Else FoundCell.Activate Range("O" & ActiveCell.Row).Value = "みーつけた!" End If End Sub

  • Excel VBA でテキストボックスの値をセルA列から検索

    いつもお世話になります。 Private Sub CommandButton3_Click() Dim 行 As String Dim 列 As String Dim 最終行 As String Dim 検索行 As String Dim メッセージ As Integer Dim 一致 As Range Dim myNO As Variant Dim i As Long Sheets(3).Select 最終行 = Range("A2").End(xlDown).Offset(1).Select 行 = ActiveCell.Row 列 = ActiveCell.Column myNO = TextBox2.Value 検索行 = Range("A2").End(xlDown).Select ※・・・Set 一致 = Range("A2:検索検").Findwhat:=TextBox2,lookat:=xlWhole) If 一致 Is Nothing Then MsgBox "データがありません。新規コード入力します。" Cells(行, 列 + 0) = UserForm1.TextBox2.Value Cells(行, 列 + 1) = UserForm1.ComboBox7.Value Else i = Cells(行 - 1, "A") Cells(i, 列 + 0) = UserForm1.TextBox2.Value Cells(i, 列 + 1) = UserForm1.ComboBox7.Value End If End Sub 「エラー1004'Range'メソッドは失敗しました'Global'オブジェクト」とでます。※印が黄色になっています。 ユーザーフォーム1のテキストボックスの値をシート3のA列から検索して、一致すれば、A列の一致セルに上書き入力して、一致が無い場合はA列の空白セルに追加入力したいのです。よろしくお願い致します。

  • エクセルVBAユーザーフォーム「テキストボックス」「コンボボックス」の書式設定について

    ユーザーフォームを作成して、出荷実績を投入しようとしています。 現在、ユーザーフォームを作成して、 上から以下のようにボタンが並んでいます。 (1)コンボボックス1  商品コードと商品名を選択する。 (2)テキストボックス1~7  地域ごとの出荷実績を投入する。 (3)コマンドボタン1  決定→入力 (4)コマンドボタン2  終了 そして、以下3つの問題点がありますが、どのようにVBAを記述したら良いのか、わかりません。  a.コンボボックス1に表示される商品を商品コード   (アルファベット)と商品名で改行したい。   つまり「折り返して全体を表示する」ことは出来ないでしょうか。  b.「AAAA~」は5行目・「CCCC~」は7行目 といった   ように、商品ごとに値を投入する行を変更したい。  c.テキストボックス1~6の内容の合計が自動で(入力している   最中に)テキストボックス7に表示されるようにしたい。 次のようなVBAは記述出来たのですが、上記3つの要素を加えるには どのようにしたらよいのか、教えていただけないでしょうか? ちなみに入力する順番は次のようになっています。(設定済み) M4→L4→J4→K4→H4→I4 →M5→L5→J5→K5→H5→I5 ------------------------------------------------------------- ’フォームを表示させる。 Sub formdsp() UserForm1.Show End Sub ’フォーム内容 Dim cnt As Integer Private Sub Combobox1_Change() End Sub '入力ボタン Private Sub CommandButton1_Click() With ActiveSheet .Cells(cnt, 13) = TextBox1.Text .Cells(cnt, 12) = TextBox2.Text .Cells(cnt, 10) = TextBox3.Text .Cells(cnt, 11) = TextBox4.Text .Cells(cnt, 8) = TextBox5.Text .Cells(cnt, 9) = TextBox6.Text .Cells(cnt, 15) = TextBox7.Text cnt = cnt + 1 .Cells(cnt, 13) = Activate End With UserForm1.TextBox1.Text = "" UserForm1.TextBox2.Text = "" UserForm1.TextBox3.Text = "" UserForm1.TextBox4.Text = "" UserForm1.TextBox5.Text = "" UserForm1.TextBox6.Text = "" UserForm1.TextBox7.Text = "" UserForm1.Combobox1.Text = "" UserForm1.TextBox1.SetFocus End Sub '終了ボタン Private Sub CommandButton2_Click() Unload Me End End Sub 'コンボボックス Private Sub userform_initialize() cnt = 4 With UserForm1.Combobox1 .AddItem "AAAA 11111111111" .AddItem "BBBB 22222222222" .AddItem "CCCC 333333333" .AddItem "DDDD 444444" .AddItem "EEEE 5555555555" .AddItem "FFFF 666" .AddItem "GGGG 7777777" .AddItem "HHHH 88888" .AddItem "IIIII 999999999" .AddItem "JJJJ 0000000000000" .AddItem "KKKK 1111" .AddItem "LLLL 222222" .AddItem "MMMM 3333" End With End Sub

  • ユーザーフォームのテキストボックスでVLOOK

    ユーザーフォームのテキストボックスで、ご教示お願いいたします。 現在、以下のようなコードこちらで教えていただきセルに入力をしております。 上から順番に入力した際、テキストボックス5に値を入たら、 listのシートから該当するもの(項目は20個)をテキストボックス6に表示させたいと思っております。 ■現在のコード '// Private Sub CommandButton1_Click() Dim LastRow As Long 'ここはキャメル形式やパスカル形式にします/大文字は定数です。 Dim i As Long '/テキストボックスに値があるか調べる For i = 1 To 7 Next i '/セルに書き込み With Worksheets("Sheet1") LastRow = .Cells(Rows.Count, 1).End(xlUp).Row + 1 For i = 1 To 7 .Cells(LastRow, i).Value = Me.Controls("TextBox" & i).Value Next End With '/TextBox1-7をクリア If MsgBox("テキストボックスを空にしてよろしいですか?", vbQuestion + vbYesNo) = vbYes Then For i = 1 To 7 Me.Controls("TextBox" & i).Value = "" Next i End If 'TextBox1にフォーカスを移動 Me.TextBox1.SetFocus End Sub ■付け足したいコード Private Sub textbox5_change() Dim temp, x temp = Me.textBox5.Value If IsNumeric(temp) Then temp = Val(temp) x = Application.VLookUp(temp, Sheets("list").Range("a1:b20"), 2, False) If Not IsError(x) Then Me.TextBox6.Value = x Else MsgBox Me.TextBox5.Value & " はリストにありません" End If End Sub 【質問内容】 付け足したいコードは上記の通りですが、どのように付け足せばいいのかが分からず、 困っております。 度々で申し訳ありませんが、テキストボックス5の値を見て、 テキストボックス6に表示させるやり方をご教示お願いいたします。

  • セルの内容をテキストボックスに表示する

    こんにちは。今月からVBAを少しずつ勉強し始めている初心者です。 VBAでA列のセルをダブルクリックすると、そのセルにチェックが入り、 ユーザーフォームを起動させる。といったコードを記述しました。 チェックが入る→フォームが起動までは良いのですが、入力済みのセルをWクリックした時にフォームのテキストボックスににセルの内容を表示させようとしているのですがうまくいきません。不具合の内容は、フォームに表示されるデータが、前回Wクリックした行のデータが表示されます。例えば、 1回目 ID50を選択→表示されない。 2回目 ID70を選択→ID50が表示される。 3回目 ID90を選択→ID70が表示される。といった具合です。 コードは下記です。Targetが前回を参照しているのだと思って調べてみたのですがよく分かりません。すみませんがご教示お願いします。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim lngTop As Long, lngLeft As Long, strTitle As String Const RangeName As String = "領収書" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "レ" Then Target = "" Target.Offset(0, 9).ClearContents Else Target = "レ" End If End If If Target.Count <> 1 Then Exit Sub  If Target.Column <> 1 Then Exit Sub   If Target <> "レ" Then Exit Sub 入力F.Show With Worksheets("送付名簿") 入力F.TextBox1.Value = Target.Offset(0, 1).Value 入力F.TextBox3.Value = Target.Offset(0, 2).Value 入力F.TextBox4.Value = Target.Offset(0, 3).Value 入力F.TextBox5.Value = Target.Offset(0, 5).Value 入力F.TextBox6.Value = Target.Offset(0, 4).Value 入力F.TextBox7.Value = Target.Offset(0, 6).Value 入力F.TextBox10.Value = Target.Offset(0, 7).Value 入力F.TextBox9.Value = Target.Offset(0, 8).Value End With End Sub

専門家に質問してみよう