![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になっています。
Sheet2に色々入力されたものがあります。
コンボボックス21で選んだものが該当する行のものを各テキストボックスやコンボボックスにスピンボタン1を押すたびにその該当する行を表記させたいです。
A4から下方向には りんご みかん 梨などをコンボボックス21
B4から下方向には 日付 2020/12/30 などをコンボボックス20
C4から下方向には 100円 200円 300円などをコンボボックス22
などまだたくさんコンボボックスやテキストボックスなどありそのものにスピンボタン1を変更するたびにその行の該当する行を表記させたいです。
A4りんごならB4 C4・・・を上記の内容のものを表記。A4・A6がりんごで、A5が みかんならその行は飛ばす。
イメージなのですがソートをかけてパソコンモニター上に見えているものを表記することを想像しているのですが・・・。
間違っていたらすみません。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
【VBA学習】ローカル変数とグローバル変数を覚えよう!
https://sashimistudio.site/vba-hensu-global/
この『値を保持し続けるか否か』の使い分けが鍵になると思いますよ。
No.5
- 回答日時:
少なくとも2つのコントロール値を連結して格納したセル値から、逆にどのように振り分けて入れるのかって点が疑問。
あとNo.2ではそのまま回答しちゃいましたけど、どちらかと言えば FindNext は不要ではないかなと。
1行毎にデータを取得するのなら『今現在取得しているセル番地』を保持しておいて引き数にある After にその番地を入れてそこから検索をかければいいのかも。
無論最初に見つけたセル番地は常に(検索値を変更しない限り)保持し続けるとか。
と頭のお味噌は妄想してますが、寒さで指が~。。。
ありがとうございます。ご指示いただいたものをステップ実行していましたら、転記させたいコンボボックスには一つしか表記されなくて、なぜだろうと思ったら、すべてのものを入力させ最後の一つを表記しているのかなと感じました。
なので、やりたいことと離れてしまうのですが見つかった行をどこかに転記するといいのかなと感じましたが、いらないスペースをとってしまうのでやめました。
No.4
- 回答日時:
No.3です。
初級者レベルなので勘違いかもですが・・・
シートのセルにある値を各コントロールに表示したいと質問文からは読み取ってたのですが、それは逆なのでしょうか?
このコード全体を細かくは見ていませんが、明らかにユーザーフォーム側のデータをシートのセルに入れてますよね?
⇒見た感じ最終行+1へのデータ追加にも見える。
補足などにあるコードと質問文がマッチングしないのも不思議なのですが、一体どちらからどちらへしたいのか?が混乱しそう。
しかもこれだけコントロールオブジェクトを使用されているのなら、コントロール種毎に名前を変える(連番をし易くする)とかも必要じゃないかなって感じはします。
いきなりこれほどの物を作ろうとはソコソコ製作されたご経験はあるのですよね?(私はこれほどの規模は作った事ありませんけど)
混乱させてしまい申し訳ありません。NO.3のご回答に
各TextBoxだけならどの列のデータをどのTextBox(コントロール名含む)の情報があれば可能かもしれませんが
とありましたので、NO3のお礼で書かせていただきました。私の意味わからない回答で申し訳ありません。
実際はCombobox21に表示されているものをスピンボタンを押すたびにシート2のD列から探し、NO3のお礼のような列からCombboxやTextboxに転記したいのです。
No.3
- 回答日時:
No.2です。
>コンボボックス21で選んだものが該当する行のものを各テキストボックスやコンボボックスにスピンボタン1を押すたびにその該当する行を表記させたいです。
各TextBoxだけならどの列のデータをどのTextBox(コントロール名含む)の情報があれば可能かもしれませんが、Comboboxにアイテムとして追加しなきゃいけない手間(不要になった際の削除)の必要性がわかりません。
仮に事前に全ての値を取り込んでいるって事なのでしょうか?
あとはスピンボタンとの連携の必要性もですかね。
と『永遠の初級者レベル』には不明な点があるのと『頭のお味噌が冬眠中』の為、ボケた回答になっていたようです。
決してお味噌は酔ってはいませんよ。飲まないですから。
場合によってはExcelBookへの『Microsoft.ACE.OLEDB.12.0』等による接続でRecordsetを用い必要なデータ群を纏めて抽出してからの方が良いのかな?
パワークエリも機能としてあるようですがなんせ基本『Excel2002』から進歩していないもので使った事ないのです。
なので有効か無効かはちょっと不明。
また初心者レベルと言われると思いますが、コマンドボタン1でテキストボックスとコンボボックスの内容をシート2に表記させています。機械のデータを登録しており、その機械の条件に見あったデータを探し出したいのです。
条件を探し出すのは、
Userform2のコンボボックス1にはUserform1のコンボボックス21
Userform2のコンボボックス2にはUserform1コンボボックス22から探し出したいです。
Dim lastRow As Long
With Worksheets("Sheet2")
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lastRow, 1) = TextBox7.Text
.Cells(lastRow, 2) = ComboBox20.Text
.Cells(lastRow, 3) = ComboBox22.Text
.Cells(lastRow, 4) = ComboBox21.Text
.Cells(lastRow, 5) = TextBox8.Text
.Cells(lastRow, 6) = TextBox11.Text
.Cells(lastRow, 7) = TextBox9.Text
.Cells(lastRow, 8) = TextBox10.Text
.Cells(lastRow, 9) = TextBox1.Text
.Cells(lastRow, 11) = ComboBox1.Text & ComboBox10.Text
.Cells(lastRow, 12) = ComboBox2.Text & ComboBox11.Text
.Cells(lastRow, 13) = Label13.Caption
.Cells(lastRow, 14) = Label19.Caption
No.2
- 回答日時:
No.1です。
未検証で申し訳ないです。
Dim myRange As Range
Dim myObj As Range
Dim keyWord As String
Dim f As String
Set myRange = Sheet2.Range("D:D")
keyWord = Me.ComboBox21.Value
Set myObj = myRange.find(keyWord, LookAt:=xlPart)
f = myObj.Address
If myObj Is Nothing Then
Me.ComboBox1.Value = ""
Exit Sub
End If
Do
Me.ComboBox1.Value = Sheet2.Range("K" & myObj.Row).Value
Set myObj = myRange.FindNext(myObj)
Loop While myObj.Address <> f
ではないかなと思うのですけど自信なし。
No.1
- 回答日時:
>イメージなのですがソートをかけてパソコンモニター上に見えているものを表記することを想像しているのですが・・・。
正解が何であるのかは質問者さんが求めるもので変わるでしょう。
なので『間違っているだろうか?』と疑問を持つよりまずは試して見られては?
その結果として速度云々は別にしてもきちんと動けばコードの整理方法のアドバイスを、もし動かないのならその原因や別の手段のアドバイスを貰った方が勉強になりますよ。
と『毎回の回答が初級レベル』な回答者は思います。
あと何年位かけられたら中級に行けるかなぁ~???
ありがとうございます。ソートと考えていました。
FindNextというものを見つけましたが。
Dim myRange As Range
Dim myObj As Range
Dim keyWord As String
Set myRange = Sheet2.Range("D:D")
keyWord = Me.ComboBox21.Value
Set myObj = myRange.find(keyWord, LookAt:=xlPart)
If myObj Is Nothing Then
Me.ComboBox1.Value = ""
Exit Sub
End If
Dim f As String
Dim myCell As Range
Set myCell = myObj
Do
f = myCell.Row
Me.ComboBox1.Value = Sheet2.Range("K" & f).Value
Set myCell = myRange.FindNext(myCell)
Loop While myCell.Row <> myObj.Row
とりあえず、ComboBox1には一つしか表示されません。
まだまだ初級者ですみません。何が足りない、間違っていますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Visual Basic(VBA) EXCEL VBA データベースの内容をユーザーフォームに表示したい。 5 2023/02/14 11:40
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- HTML・CSS VB.net コンボボックス 2 2022/06/30 20:37
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
5
【Excel VBA】コンボボックスで選択した値の取得
Excel(エクセル)
-
6
ユーザーフォーム 3つのコンボボックスの連動について教えてください。
Excel(エクセル)
-
7
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
8
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
9
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
10
コンボボックス内の文字サイズ変更
Excel(エクセル)
-
11
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
12
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
13
EXCEL VBAのコンボボックスに取り込むリストについて
Excel(エクセル)
-
14
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
15
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
16
VBAでオプションボタンによってコンボボックスの内容を変える方法
Visual Basic(VBA)
-
17
VBAのユーザーフォームで、テキストボックスを連携させたいのですが。
Visual Basic(VBA)
-
18
Excel にて、 リストボックスのデーターを別ブックのセルに転記するVBAをご教授願います
Excel(エクセル)
-
19
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
VBAコードについて教えてくださ...
-
【Excel VBA】一番右端セルまで...
-
エクセルVBA 配列からセルに「...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
Excel VBAでCheckboxの名前を変...
-
Excel VBA IF文がうまく動作し...
-
特定の色のついたセルを削除
-
VBAでユーザーフォームにセル値...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA:日付を配列に入れ別セルに...
-
【VBA】【ユーザーフォーム_Lis...
-
C# DataGridViewで複数選択した...
-
Excel2003 VBA 「*」を含む文字...
-
VBA 複数条件の分岐処理の上手...
-
VBA にて、条件付き書式で背景...
-
ExcelVBAマクロ『並べ替え』⇒『...
-
DataGridViewでグリッド内に線...
-
セルの半透明着色処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA にて、条件付き書式で背景...
-
特定の色のついたセルを削除
-
【VBA】【ユーザーフォーム_Lis...
-
VBA 複数条件の分岐処理の上手...
-
入力規則のリスト選択
-
【VBA】写真の貼り付けコードが...
-
Excel VBA IF文がうまく動作し...
-
VBAでユーザーフォームにセル値...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
関数の引数でrangeを指定したとき
-
複数指定セルの可視セルのみを...
-
DataGridViewでグリッド内に線...
おすすめ情報
初級者丸出しですが、
For i = 4 To 1000
If Sheet2.Cells(i, "D").Value = "りんご" And UserForm1.ComboBox21.Value = "りんご" Then
UserForm1.ComboBox1.Value = Sheet2.Cells(i, "K").Value
End If
Next
とやってみましたが、やはり一つしかでませんでした。
つづき
.Cells(lastRow, 15) = Label25.Caption
.Cells(lastRow, 16) = Label31.Caption
.Cells(lastRow, 17) = TextBox2.Text
.Cells(lastRow, 19) = ComboBox3.Text & ComboBox12.Text
.Cells(lastRow, 20) = ComboBox4.Text & ComboBox13.Text
.Cells(lastRow, 21) = Label14.Caption
.Cells(lastRow, 22) = Label20.Caption
.Cells(lastRow, 23) = Label26.Caption
.Cells(lastRow, 24) = Label32.Caption
.Cells(lastRow, 25) = TextBox3.Text
.Cells(lastRow, 26) = ComboBox5.Text & ComboBox14.Text
.Cells(lastRow, 28) = Label16.Caption
.Cells(lastRow, 29) = Label22.Caption
.Cells(lastRow, 30) = Label27.Caption
.Cells(lastRow, 31) = Label28.Caption
.Cells(lastRow, 32) = TextBox4.Text
.Cells(lastRow, 33) = ComboBox6.Text & ComboBox15.Text
.Cells(lastRow, 35) = Label17.Caption
.Cells(lastRow, 36) = Label23.Caption
.Cells(lastRow, 37) = Label28.Caption
.Cells(lastRow, 38) = Label34.Caption
.Cells(lastRow, 39) = TextBox5.Text
.Cells(lastRow, 40) = ComboBox7.Text & ComboBox16.Text
.Cells(lastRow, 42) = Label18.Caption
.Cells(lastRow, 43) = Label24.Caption
.Cells(lastRow, 44) = Label29.Caption
.Cells(lastRow, 45) = Label35.Caption
.Cells(lastRow, 46) = TextBox6.Text
.Cells(lastRow, 48) = ComboBox8.Text & ComboBox17.Text
.Cells(lastRow, 49) = ComboBox10.Text & ComboBox19.Text
.Cells(lastRow, 50) = Label15.Caption
.Cells(lastRow, 51) = Label21.Caption
.Cells(lastRow, 52) = Label30.Caption
.Cells(lastRow, 53) = Label36.Caption
.Cells(lastRow, 54) = TextBox12.Text