- ベストアンサー
エクセルvbaセル範囲について
困っております。 ご教授ください。 エクセルシート上に1~10の数字が列方向に並んでいます。 ユーザーフォームでtextbox1とtextbox2を作成します。 textbox1とtextbox2は1~10の間で範囲を入力します。 textbox2でエンターを押されたときに処理が開始します。 例えばtextbox1に「3」、textbox2に「8」が入力された場合、 3,4,5,6,7,8のセル範囲を選択したいのですがどのようにすればよろしいでしょうか。 よろしくお願いします。
- mitsssd
- お礼率38% (10/26)
- Visual Basic
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ユーザフォームから変数(Txtbx1, Txtbx2)への代入を知らないので、そこは自前でお願いします。 A列に並んでるものとします。 sub Macro1() Dim LastRow As Long Dim Txtbx1 As Long, Txtbx2 As Long, Flag As Long Dim myRange As Range Dim i As Long, j As Long Flag=0 LastRow=Cells(Rows.Count "A").End(xlUp).Row For i=Txtbx1 to Txtbx2 For j=1 to LastRow if Cells(j,"A").Value=i then If Flag=0 then set myRange=Cells(j,"A") Flag=1 Else set myRange=Union(myRange, Cells(j, "A")) End if End if Next j Next i myRange.Select End sub
その他の回答 (1)
- High_Score
- ベストアンサー率25% (45/176)
データの並んでいる行番号をmyRowにしておくので、好きな行番号を記入してください。 sub Macro1() Dim LastColumn As Long, myRow As Long Dim Txtbx1 As Long, Txtbx2 As Long, Flag As Long Dim myRange As Range Dim i As Long, j As Long myRow=2 Flag=0 LastColumn=Cells(myRow, Columns.Count).End(xltoLeft).Column For i=Txtbx1 to Txtbx2 For j=1 to LastColumn if Cells(myRow, j).Value=i then If Flag=0 then set myRange=Cells(myRow, j) Flag=1 Else set myRange=Union(myRange, Cells(myRow, j)) End if End if Next j Next i myRange.Select End sub
関連するQ&A
- エクセル VBA ユーザーフォームで検索したいのですが
つい昨日触り始めた大初心者です。。 エクセルシートにて 数値を記した列と、詳細を記した列があります。 ユーザーフォームにて textboxに数値を入力し、ボタンをクリックすると 検索をして、ユーザーフォーム内のlabelに詳細が表示される、といったvbaを書いているのですが、どうにもうまくいきません。 また、textboxに検索範囲にない数値が入力されたときには Labelに「なし」と表示させたいのですが、 エラーが出てしまい、その処理もやはりうまく出来ません。 どなたかご教授いただけますでしょうか。
- ベストアンサー
- オフィス系ソフト
- Excel VBA(Win2000、Office2000)
現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。 フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。 問題の日付に関する質問についてですが・・・ ユーザーフォーム上に 年を入力するComboBox1 → 2004 月を入力するComboBox2 → 5 日を入力するComboBox3 → 7 *いづれも、プルダウンから数字を選択して入力するようにしています。 この3つの入力値を合わせて、2004/05/07と認識させて、TextBox1に"金"と表示させたいのですが、どのようにしたら良いでしょうか? TextBox1表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- セルの数字を範囲で選択して計算させたいです。
エクセル2000を使用しています。 CSVファイルを読み込んで、シートに,区切りで開きました。 特定の列の数字を範囲で選択して(複数行)、範囲で選択したセルの数字を1/1000したいです。 特定のセルを範囲で指定するのは、毎回セルの開始行とセルの終了行が変わるためです。また 選択行の上下セルにも文字が入ってきます。 別シートに数式をいれないで、同じセルに計算結果を出すことは可能でしょうか?
- ベストアンサー
- オフィス系ソフト
- 値が奇数の時、任意のセル範囲の行の色付けマクロを
条件つき書式のマクロを教えてください。 任意の選択したセルの右端列に数字を入力しています。 その数字が奇数だったら、数字の入力してある任意の列は除いて、行の色付けをしたいのです。 選択するセル範囲と数字の入っているセルの列はシート毎、ブック毎に、変わりますので、マクロで設定をしたいと思っています。エクセル2010を使っています。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA 選択範囲がセル範囲か列丸ごとか区別
マクロ起動時のセルの選択範囲により、異なる処理をしようと思ってます。 ・セル1個あるいは縦に複数個選択されている 選択したセルについて処理 ・1列全体が選択されている 1列のデータ入力されているセルのみ対象 なので、起動時に選択されているのがセル範囲なのか1列全体なのか識別する必要があります。 どうすればいいでしょうか?
- ベストアンサー
- Excel(エクセル)
- Excel VBA-改行について
Excel VBAで、UserFormのTextBoxに入力されたものをワークシートに表示させたいのですが、 TextBox内で、「Enter」キーが押されたら改行する方法と TextBoxで入力された通り(改行等)にワークシートのセルに表示する方法を どなたか教えて下さい。
- ベストアンサー
- Visual Basic
- セルの内容をテキストボックスへ反映
ユーザーフォームを用いて勤怠打刻のシステムを作っています。 ユーザーフォームの構成は下記の通りです。 TextBox1に時間(hour)を入力 TextBox2に分(minits)を入力 →TextBox3に入力した時間分を表示させ、G列H列に反映 TextBox4に打刻する年月日をB列から拾う シート A B ・・・ G H 1 2019/10/1 08:00 19:00 2 2019/10/2 08:00 17:00 3 2019/10/3 08:00 17:00 ユーザーフォームはG列とH列に入力し、 G列に入力するとH列に移動、 H列に入力すると一つ下のG列へ移動と コマンドボタンを押すと自動でジグザグに動くようにしています。 TextBox4にG列・H列に対応するB列の値を表示させたいと思っています。 例えば、G1を選択しているとTextBox4に2019/10/1を表示、H2を選択していると2019/10/2を表示などです。 年月日は表示されるものの、セルの選択が変わっても TextBox4の値が変わらない状況です。 ご教授いただければ幸いです。
- ベストアンサー
- Visual Basic
- Excel VBAで教えてください。
Excel VBAで教えてください。 テキストデータをExcelで読み込んだ後、Sheet1に以下のデータが入っており、 A列 B列 C列 氏名 開始日(yyyy/mm/dd) 終了(yyyy/mm/dd) テキストボックスに開始日(yyyy/mm/dd)、終了日(yyyy/mm/dd)、を入力し、入力した開始日から終了日のデータ検索し、A列からのデータをコピーし、Sheet2に貼り付けしたい。 テキストデータをExcelで読み込むコードはできたのですが、その後の処理ができずに困っています。 ユーザーフォームに入力するコードも教えてください。
- ベストアンサー
- SE・インフラ・Webエンジニア
- Excel VBA テキストボックスから範囲選択を行うには?
UserForm上にTextBox1、TextBox2、TextBox3、TextBox4、検索ボタンがあり、シートのC列にデータが入力されています。 下記のことを行いたいと考えています。 (1)TextBox1に検索する文字列入力 (2)TextBox2に台数(例えば100)を入れて検索ボタンを押す (3)検索ボタンを押すと、TextBox3にTextBox1の値が入り、TextBox4にTextBox1の値から入力した台数の行にある値を検索して表示させたいのです。 と同時に、TextBox3、TextBox4からシートの範囲選択を行うことは可能でしょうか? 以前も質問させていただきましたが、動作するに至らずでしたので再質問させていただきました。 よろしくお願いしますm(__)m
- 締切済み
- オフィス系ソフト
- excel VBA 色をセルに自動的に付ける
エクセル2000を使用していて、VBA初心者で勉強中の者です。 タイムテーブルを作っています。 入力はユーザーフォームを使っています。 コマンドボタンを押すとtextboxにある値を判断してセルに色を付けるマクロを教えてください。 タイムテーブルは列は15分で1列使い、1時間で4列です。 1曜日は4行分使い、4行目に予定時間(textbox2)が入ります。 15分なら0.25 30分なら0.5 1時間は1 ・・・ ユーザーフォームの登録ボタンをクリックした時4行目に入力される値で 判断して、例えば0.15ならセルを1つ塗りつぶし、1時間なら4列分塗りつぶすマクロを教えてください。 塗りつぶすセルの値が入っているのはtextbox2 色は ColorIndex = 33 textbox2の値が0.01~0.25は1列分塗りつぶし 0.26~0.5は2列分塗りつぶし 0.51~0.75は3列分塗りつぶし 0.76~1は4列分塗りつぶし 1.01~0.25は5列分塗りつぶし ・・・ 4.76~5は20列分塗りつぶし よろしくお願いします。 以下はユーザーフォームの登録ボタンを押す時のコードです。 Private Sub CommandButton1_Click() '未入力なら中止 If ComboBox2.Value = "" Then MsgBox "時間を入力" Cancel = True Exit Sub ElseIf ComboBox3.Value = "" Then MsgBox "時間を入力" Cancel = True Exit Sub End If Call Macro登録 End Sub Sub Macro登録() With ActiveSheet .Cells(行, 列).Value = ComboBox1.Text'1行目の値 .Cells(行 + 1, 列).Value = TextBox1.Text'2行目の値 .Cells(行 + 2, 列).Value = ComboBox2.Text & "~" & ComboBox3.Text'3行目の値 .Cells(行 + 3, 列).Value = TextBox2.Value'4行目の値 End With End Sub
- 締切済み
- オフィス系ソフト
補足
早い回答ありがとうございます。 列と行を間違えてしまいました。 行方向に並んでいる場合はどのようになりますか。 お手数おかけしますが教えて下さい。 よろしくお願いします。