いつもお世話になっています。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
【Excel VBA】コンボボックスで選択した値の取得
Excel(エクセル)
-
-
4
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
5
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
6
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
VBAのユーザーフォームで、テキストボックスを連携させたいのですが。
Visual Basic(VBA)
-
9
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
10
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
11
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
12
EXCEL VBAのコンボボックスに取り込むリストについて
Excel(エクセル)
-
13
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
14
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
15
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
16
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
17
ユーザーフォーム 3つのコンボボックスの連動について教えてください。
Excel(エクセル)
-
18
Excel VBA 空白セルがあったらメッセージボックスで知らせたい
Visual Basic(VBA)
-
19
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
-
20
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
入力規則のリスト選択
-
【VBA】【ユーザーフォーム_Lis...
-
Excel VBA IF文がうまく動作し...
-
C#によるExcel操作
-
EXCEL VBA 文中の書式ごと複写...
-
EXCEL VBA 1つのセル内の文字に...
-
C# DataGridViewで複数選択した...
-
ListBoxを選択したデータ編集② ...
-
円弧の描画方法
-
昨日、質問した件『VBA にて、...
-
下記のマクロの説明(意味)を...
-
CellEnterイベント仕様について
-
Excel UserForm の表示位置
-
ExcelVBAマクロ『並べ替え』⇒『...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
【Excel VBA】一番右端セルまで...
-
Excel UserForm の表示位置
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
C# DataGridViewで複数選択した...
-
入力規則のリスト選択
-
Excel VBA IF文がうまく動作し...
-
【VBA】写真の貼り付けコードが...
-
Excel 範囲指定スクショについ...
-
EXCEL VBA 文中の書式ごと複写...
-
Excel VBAでCheckboxの名前を変...
-
EXCEL 2010 VBAでピボットで複...
-
飛び地セルの空白判定
-
エクセルのカーソルを非表示に...
-
CellEnterイベント仕様について
おすすめ情報
初級者丸出しですが、
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