いつもお世話になっています。
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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
治せない「クセ」を教えてください
なくて七癖という言葉どおり、人によっていろいろなクセがありますよね。 あなたには治せないクセがありますか?
-
集合写真、どこに映る?
あなたが集合写真を撮られるとき、画角のどのあたりにいることが多いですか? 私は振り返ってみると右の端にいることが多い気がします。
-
2024年においていきたいもの
2024年もあとわずかですが、いま抱えているもので「これは来年にもっていきたくないなぁ」というものを教えて下さい。
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
-
4
【Excel VBA】コンボボックスで選択した値の取得
Excel(エクセル)
-
5
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
6
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
7
VBA コンボボックスで選んだ値を取得するには
その他(Microsoft Office)
-
8
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
9
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
10
Vba テキストボックス文字を右端から配置していく方法
Visual Basic(VBA)
-
11
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
12
フォーム上のリストボックスに重複して表示しています
Visual Basic(VBA)
-
13
Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。
Visual Basic(VBA)
-
14
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
-
15
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
16
EXCELのリストボックスを選択した行が何行目か
その他(プログラミング・Web制作)
-
17
コンボボックスのインデックスが不正
Visual Basic(VBA)
-
18
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
19
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
20
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
C# DataGridViewで複数選択した...
-
VBA 検索結果の行を取得。上か...
-
【Excel VBA】一番右端セルまで...
-
Excel 範囲指定スクショについ...
-
入力規則のリスト選択
-
QRコード作成マクロについて
-
EXCEL VBA 文中の書式ごと複写...
-
オーバーフローを回避する方法?
-
Excel UserForm の表示位置
-
【VBA】写真の貼り付けコードが...
-
VBA:日付を配列に入れ別セルに...
-
ListBoxを選択したデータ編集② ...
-
エクセルのカーソルを非表示に...
-
関数の引数でrangeを指定したとき
-
マクロ初心者です。 マクロで範...
-
エクセル、マクロで番号を読込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
【VBA】【ユーザーフォーム_Lis...
-
特定の色のついたセルを削除
-
CellEnterイベント仕様について
-
VBA:日付を配列に入れ別セルに...
-
Excel VBAでCheckboxの名前を変...
-
【Excel VBA】一番右端セルまで...
-
エクセルのカーソルを非表示に...
-
EXCEL VBA 文中の書式ごと複写...
-
DataGridViewでグリッド内に線...
-
下記のマクロの説明(意味)を...
-
C# DataGridViewで複数選択した...
-
Excel 範囲指定スクショについ...
-
【VBA】写真の貼り付けコードが...
-
VBA にて、条件付き書式で背景...
-
DataGridViewのフォーカス遷移...
-
Excel VBAで特定の範囲の空白セ...
おすすめ情報
初級者丸出しですが、
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