
UserForm上にTextBox1、TextBox2、TextBox3、TextBox4、検索ボタンがあり、シートのC列にデータが入力されています。
下記のことを行いたいと考えています。
(1)TextBox1に検索する文字列入力
(2)TextBox2に台数(例えば100)を入れて検索ボタンを押す
(3)検索ボタンを押すと、TextBox3にTextBox1の値が入り、TextBox4にTextBox1の値から入力した台数の行にある値を検索して表示させたいのです。
と同時に、TextBox3、TextBox4からシートの範囲選択を行うことは可能でしょうか?
以前も質問させていただきましたが、動作するに至らずでしたので再質問させていただきました。
よろしくお願いしますm(__)m
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
セルの範囲をシート上でクリックもしくはドラッグして入力する場合は、TextBoxではなくRefEditコントロールを使用します。
RefEditコントロールをUserFormに貼り付けるにはVBE画面で以下の操作をします。
(1)フォームの画面でツールボックスを表示
(2)ツーツボックスの余白を右クリック
(3)「その他のコントロール」をクリック
(4)スクロールして「RefEditCtrL」のチェックボックス
をクリック
(5)「OK」クリック
これでRefEditコントロールがツールボックスに新たに表示されますので、TextBox1を削除しRefEditコントロールを貼り付けてください。
コードは以下を参考にして下さい。
Private Sub CommandButton1_Click()
'---「(1)TextBox1に検索する文字列入力」
'---「おっしゃる通りです。C1:C4000にデータが入力」
str先頭セルアドレス = RefEdit1.Value
'---「(2)TextBox2に台数(例えば100)を入れて」
int相対行 = TextBox2.Text - 1
'---対象セルの位置を求める
'---注:C1と入力してもC1:C4000と入力しても結果は同じ
int対象セルの行番号 = Range(str先頭セルアドレス).Row + int相対行
int対象セルの列番号 = Range(str先頭セルアドレス).Column
'---「(3)TextBox3にTextBox1の値が入り、」
TextBox3.Text = str先頭セルアドレス
'---「TextBox4にTextBox1の値から入力した台数の行にある値」
'---「TextBox1の検索文字列から100行目のデータ」
TextBox4.Text = Cells(int対象セルの行番号, int対象セルの列番号)
End Sub
なお、入力エラーの処理はありません。
No.4
- 回答日時:
こんにちは。
ご質問自体は、あまりよく理解できませんが、こういう内容かなって思います。
それと、ボタンがひとつ余計のようですね。本来は、TextBox2 に代入した時点で、範囲が取れます。
'Option Explicit
Dim i As Long
Dim j As Long
Dim CopyRng As Range
Private Sub CommandButton1_Click()
'OKボタン
'TextBox3とTextBox4のシリアルNoの範囲をC列から範囲選択した状態にする。
With ActiveSheet
If i > 0 And j > 0 Then
Set CopyRng = .Range(.Cells(i, 3), .Cells(j, 3))
CopyRng.Select
End If
End With
End Sub
Private Sub CommandButton2_Click()
'貼り付けボタン
'選択した範囲をコピーし、別シートのB11から下へ貼り付ける。
If Not CopyRng Is Nothing Then
If IsEmpty(Worksheets("Sheet2").Range("B11")) Then
CopyRng.Copy Worksheets("Sheet2").Range("B11")
Else
CopyRng.Copy Worksheets("Sheet2").Range("B65536").End(xlUp)
MsgBox "コピー完了", 64
CopyRng.Cells(1).Select
Set CopyRng = Nothing
End If
End If
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'TextBox1
If KeyCode = 13 Then
TextBox3.Text = TextBox1.Text
i = Val(TextBox3.Text)
End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'TextBox2
Dim t As Long
Dim Ret As Long
With ActiveSheet
If KeyCode = 13 Then
If i > 0 Then
j = CLng(TextBox2.Value) '行数を入れる
TextBox4.Text = TextBox2.Value
End If
End If
End With
End Sub
No.3
- 回答日時:
テキストボックスを使いまくらなくとも、セル範囲の指定は
Sub test01()
Dim a As Range
Set a = Application.InputBox(prompt:="検索範囲指定", Type:=8)
MsgBox a.Address
Range("D1").Select
Worksheets("Sheet1").Range(a.Address).Select
End Sub
のように、Application.InputBoxのType:=8で捉えられる。
ーーー
>TextBox1に検索する文字列入力
この正確な意味は、
TextBox1に検索する、セル範囲の文字列を入力、のことか?
そして例えばTextBox1がA1:A20という文字列で,
TextBox2が100という数値なら,
台数が入っている、A1:A20の範囲で100の行を探すということではないの?
そう書けば簡単ではないの。
ーー
それなら初めに言った、、Application.InputBoxのType:=8が良いと思うよ。
ーー
使わないのなら、
Sub test02()
s = InputBox("検索セル範囲文字列")
Worksheets("Sheet1").Range(s).Select
End Sub
が参考になると思うよ。
文字列sがTextbox1と考えればよいから。
この回答への補足
返事が遅くなり、申し訳ありません。
>TextBox1に検索する文字列入力
おっしゃる通りです。C1:C4000にデータが入力されており、TextBox2に100と入力すると、TextBox1の検索文字列から100行目のデータをTextBox4に表示させたいのです。
Application.InputBoxの使い方がまだよくわかっていないため、調べて勉強してみます。
No.2
- 回答日時:
こんばんは。
#1 さんとダブりました。(くどいのはお許しください)
前回の質問とあわせて読ませていただきました。
たぶん、前のものでも、今回のものでも、、キメウチでコードを書く人は掲示板ではいるとは思いますが、私には、出来ません。書いても「動きません」と言われるだけだと思います。
そのご説明では、情報として不足しているようです。
>TextBox1に検索する文字列入力
たぶん、シリアルNo.を検索する、というのでしょうね。
それが、C列にあるのですか?
>TextBox2に台数(例えば100)を入れて検索ボタンを押す
台数を入れて、どこを検索するのですか?
>TextBox3にTextBox1の値が入り、
>TextBox4にTextBox1の値から入力した台数の行にある値
>検索して表示させたいのです。
台数のある行というのはどこにあるのですか?
シリアルNo.は台数ではありません。
最後の範囲選択とはどのようになるのでしょうか?
行として選択するのでしょうか?
さっぱり分からないのです。簡単な図でも書いていただけませんか?
この回答への補足
言葉足らずで申し訳ありませんでしたm(__)m
>たぶん、シリアルNo.を検索する、というのでしょうね。
>それが、C列にあるのですか?
その通りです。検索するシリアルNo.はC列にあります。
>台数を入れて、どこを検索するのですか?
台数を100とすると、TextBox1に入力したシリアルNo.からC列の100行目を検索したいと思っています。
>台数のある行というのはどこにあるのですか?
台数という言い方は適切ではありませんでしたm(__)m
C列の100行目という意味です。
>最後の範囲選択とはどのようになるのでしょうか?
行として範囲選択したいと思っています。
具体的にはTextBox3とTextBox4に入力されたシリアルNo.の範囲を選択したいと思っております。
No.1
- 回答日時:
条件やデータ構造が理解出来ません。
> TextBox1の値から入力した台数の行にある値
TextBox1とTextBox2とシート上のデータに対する関連が見えません。
以前に質問されたならば、ある程度のコードは出来ているのでしょうか?
動作に至らなかった部分に絞って質問しては如何でしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 複数条件のオートフィルタ(VBA) 2 2022/12/09 15:40
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- その他(プログラミング・Web制作) ボールの動きがスムーズに動いてかつ目盛り線描画を維持するためには 4 2023/05/31 10:01
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) Excelのtextboxへの入力で小数点以下に0が続く場合でも正しく表示したい 3 2022/04/11 13:53
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
値が入っているときだけ計算結...
-
excelでsin二乗のやり方を教え...
-
Excel 数値の前の「 ' 」を一括...
-
2つの数値のうち、数値が小さい...
-
EXCELで条件付き書式で空白セル...
-
【Excelで「正弦波」のグラフを...
-
リンク先のファイルを開かなく...
-
VLOOKUP関数を使用時、検索する...
-
検便についてです。 便は取れた...
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
ある範囲のセルから任意の値を...
-
ワードのページ番号をもっと下...
-
WORDで複数語句を検索するには
-
MIN関数で空白セルを無視したい...
-
彼女のことが好きすぎて彼女の...
-
Excel 0目標に対して数字があ...
-
精液の落とし方を教えてください
-
病院側から早く来てくださいと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
値が入っているときだけ計算結...
-
リンク先のファイルを開かなく...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
VLOOKUP関数を使用時、検索する...
-
尿検査の前日は自慰控えたほう...
-
MIN関数で空白セルを無視したい...
-
小数点以下を繰り上げたものを...
-
風俗店へ行く前のご飯
-
エクセルで空白セルを含む列の...
-
Excel 数値の前の「 ' 」を一括...
-
【Excelで「正弦波」のグラフを...
-
納豆食べた後の尿の納豆臭は何故?
-
EXCELで式からグラフを描くには?
-
ある範囲のセルから任意の値を...
おすすめ情報