ここから本文です

VBAで質問があります。 先程ベストアンサーで回答してしまった質問で 再度質問...

aya********さん

2020/1/2017:50:01

VBAで質問があります。

先程ベストアンサーで回答してしまった質問で
再度質問が出てしまいました。

「Visual Basic」のカテゴリマスターの
kky********さんに質問があります。
見つけて頂けることを祈って投稿します。

<追加質問>
B列とD列の値は0.1単位になります。
そのようにコード修正して頂けないでしょうか。

度々で恐縮ですが
よろしくお願いいたします。


------------------------------------------
以下、先程の投稿内容です。
思い出していただけると幸いです。


コマンドボタン1(検索)を押すと
下記①~③全ての条件を満たす値を

テキストボックス4(記号)に表示されるようにしたいです


以下①~③の条件を説明します


①テキストボックス1(径)に値を入力します
その値よりも次に小さい値をB列(径)から選択されるようにします

例)テキストボックス1が「4」の場合
B列の「3」(記号う)が選択される


②テキストボックス2(角度)に値を入力します
その値と同じ値をC列(角度)から選択されるようにします

例)テキストボックス2が「2」の場合
C列の「2」(記号う、え)が選択される


③テキストボックス3(長さ)に値を入力します
その値以上の値をD列(長さ)から選択されるようにします

例)テキストボックス3が「30」の場合
D列の「40」(記号う)が選択される


※今回の例ではテキストボックス4(記号)に
①~③全て満たす「う」が表示されます


添付ファイルの表は便宜上5行までしか表示させておりませんが
本来は100行位あります

テキストボックス,Visual Basic,記号,テキストボックス2,テキストボックス3,End If,0 To UBound

閲覧数:
26
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

kky********さん

2020/1/2018:43:12

整数でないならこれでどうですか。

Private Sub CommandButton1_Click()
Dim r As Long, rmax As Long
Dim buf As Double
Dim tbl() As Variant
Dim i As Long
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then
MsgBox "入力されていない項目があります"
Exit Sub
End If
TextBox4.Text = ""
With Worksheets("Sheet1")
rmax = .Cells(Rows.Count, 1).End(xlUp).Row
'TextBox1の値より小さい値を取得
buf = 99999999.9
For r = 1 To rmax
If .Cells(r, 2) < Val(TextBox1.Text) And .Cells(r, 2) < buf Then
buf = .Cells(r, 2)
End If
Next r
'TextBox1の値より小さいデータを配列に
ReDim tbl(1, 0)
For r = 1 To rmax
If .Cells(r, 2) = buf Then
tbl(0, UBound(tbl, 2)) = .Cells(r, 1)
tbl(1, UBound(tbl, 2)) = r
ReDim Preserve tbl(1, UBound(tbl, 2) + 1)
End If
Next r
'配列の中にTextBox2の値と同じでTextBox3以上ものだけ残す
For i = 0 To UBound(tbl, 2) - 1
If .Cells(tbl(1, i), 3) <> Val(TextBox2.Text) Or Cells(tbl(1, i), 4) < Val(TextBox3.Text) Then
tbl(0, i) = ""
End If
Next i
End With
'該当データ表示
'buf = ""
For i = 0 To UBound(tbl, 2) - 1
If tbl(0, i) <> "" Then
TextBox4.Text = tbl(0, i)
Exit Sub
End If
Next i
If TextBox4.Text = "" Then
MsgBox "該当データはありません"
End If
End Sub

  • kky********さん

    2020/1/2212:06:59

    名指しでの質問なので急いで回答したのですが、何故そのままなのでしょう。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2020/1/22 12:11:00

大変申し訳ありません。

ベストアンサーで送ったつもりが
送れていませんでした。

頂いたご回答はもちろん理想通りでした。

返信がおくれてしまい
本当に申し訳ありませんでした。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる