• ベストアンサー

ユーザーフォームでセルを選択

エクセルのVBAでユーザーフォームに数値を入力してセルを選択することは可能でしょうか? 例えば、列はAに固定していいのですが、ユーザーフォームに「123」と入力してボタンを押せば「A123」のセルがアクティブになるようなユーザーフォームを作成したいのですが方法がわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Private Sub CommandButton1_Click() 'テキストボックスが空の時は何もしない If Me.TextBox1 = "" Then Exit Sub 'テキストボックスが数字以外だったら注意メッセージ表示でExit Sub If IsNumeric(Me.TextBox1) = False Then MsgBox "数字を入力してください", vbExclamation Exit Sub End If 'A列の指定されたセルを選択後、ユーザーフォームを閉じる Range("a" & Me.TextBox1).Select Unload Me End Sub エラーが起きないようにちょっと書き換えてみました。

kurisu326
質問者

お礼

ありがとうございます、早速使用させて頂きました。これで無事問題が解決しました。

その他の回答 (2)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.3

こんにちは。 ご希望の機能はユーザーフォームを作成しなくても、数式バーの左にある小さなボックスで可能ですが、ユーザーフォームで行う場合のサンプルです。 ご希望の動作に若干機能を追加しています。 ・A1 や E1 などセルのアドレスとして有効な文字列であれば、そこにジャンプ ・数字であれば、定数で指定した列の行へジャンプ TEXTBOXに入力されたものが数値の場合、IsNumericで数値であるチェックを行うだけではエラーが発生する可能性があります。例外処理として、Intで小数点以下を無効にしておいたり、数字の有効範囲のチェックも必要でしょう。 機能的にはシンプルですがコードが長いのは、コメントを数多く入れてあるからです。 【前提】 ユーザーフォーム内の配置コントロール ・TEXTBOX1 ・CommandButton1 【以下VBAコード 場所:ユーザーフォーム】(次行から終わりまで) Private Sub CommandButton1_Click()   '列名が省略された場合に移動する列   Const cstCol = "A"   Dim Sh As Worksheet   Dim TargetCell As Range   'TEXTBOXコントロールの値   strParam = Me.TextBox1.Text   '処理対象はアクティブシート   Set Sh = ActiveSheet   'セルアドレスとして有効ならば   On Error Resume Next     Set TargetCell = Sh.Range(strParam)   On Error GoTo 0   If Not TargetCell Is Nothing Then     TargetCell.Select   '数字であれば   ElseIf IsNumeric(strParam) Then     '小数点以下はカット     RowNum = CLng(Int(strParam))     '数字で1~65536の範囲であれば     Select Case RowNum       Case 1 To 65536         '定数を補完してセル選択         Sh.Cells(RowNum, cstCol).Select       Case Else         '数字の有効範囲外であればトラップ         GoTo ExitHandler     End Select   End If   Application.Goto Reference:=ActiveCell ExitHandler:   Set TargetCell = Nothing   Set Sh = Nothing End Sub

kurisu326
質問者

お礼

早速使用させて頂きました。細かな回答ありがとうございます。

回答No.1

Private Sub CommandButton1_Click() If Me.TextBox1 = "" Then Exit Sub Range("a" & Me.TextBox1).Select End Sub こんな感じでしょうか?

関連するQ&A

  • ExcelVBAでセルをクリックしてユーザーフォームを表示するには

    OfficeExcel2003を使用しています。 ユーザーフォームのテキストボックスやコンボボックスに文字や数値を入力し、OKボタンを押せばエクセルのセルに記入できるようにしようと思ってます。 フォームはなんとか(形だけですが..)作成できたのですが、そのフォームを呼び出す方法として、入力したい行のA列のセルをクリックすればユーザーフォームが表示されるようにしたいのです。 ネット上でいろいろ検索してみましたがなかなか見つけることができませんでした。 初歩的な質問かもわかりませんが、教えて頂けないでしょうか。 宜しくお願い致します。

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • エクセルVBA「ユーザーフォーム→セルへの入力」ほか

    エクセルVBA「ユーザーフォーム→セルへの入力」ほか 連日の質問にご回答頂き大変に感謝しております。 昨日投稿したユーザーフォームからのセルへ入力に関する質問です。 下記画像のようなユーザーフォームを作成したのですが、「合計」の数値をワークシートの("コンボボックスの文字列:"「番号(この場合01)」")のセル番地に入るように組みたいのですが、どんなコーディングがよろしいでしょうか。(つまり、画像の場合は「1年2組」列の「01」行に「合計」の値を入力したいのです) さらにもう一点質問致します。 VBAとそうでない部分両方の質問となるのですが、見ての通り私ベルマークを集計するためのブックを作成しています。 ベルマークの枚数を集計する方法が思いつかないのですが、ユーザーフォームを利用して、ベルマーク番号別の「点数別(0.1点・0.2点・・・)枚数」を計算したいのですが、どのようなコーディング、また、シートを作れば良いのでしょうか。お知恵を貸して頂けると幸いです。 以上ご回答いただけるとうれしいです。よろしくお願いします

  • エクセルでセルを選択出来ないようにしたい

    エクセルに関して、セルを選択出来ないように設定したいのですが、やり方がわかりません。あるいはそんなことはできるのでしょうか? 質問(1) 状況として、シートにはVBAのコマンドボタンのみあり、ボタンでユーザーフォームを呼び出すような仕様であり、セルは全く使用しません。ですのでシートのどこのセルも選択出来ないようにしたいのです。出来ますか? 質問(2) マウススクロールも出来なくしたい(画面を固定したい)のですが、そんなこともできるのでしょうか? よろしくお願いいたします。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • ユーザーフォーム上のボタンの使い方

    今、VBAの本とインターネットで調べながら初めてユーザーフォームを作成中ですが、 どうしてもわからないことがあり、ご質問させていただきました。 初歩的なことかも知れませんが、ご教授よろしくお願い致します。 1.オプションボタンを二つ作成しました。  一方を選択した場合、フレーム全体をグレーアウトに  することはできますか。  例)ユーザーフォーム上のオプションボタン  A:住所登録   (郵便番号・所在地等を入力)  B:電話番号登録 (電話番号を入力) ※Bをオプションボタンで選択した場合、Aのフレーム全体を  グレーアウト(入力禁止)にすることはできますか。 2.ComboBoxで"年"、"月"、"日"それぞれプルダウンで選択できるように  したのですが、ワークシートに反映する時、同一セルに入力するか、  それらの数字を認識して日付として一つのセルに表示することはできますか。  例)ユーザーフォーム上    2007▼年   4▼月  19▼日  ※一つのセルに“2007年4月19日”と表示することはできますか。 3.2.の続きで、"年"、"月"、"日"すべて選択している場合、  チェックボックスにチェックが入り、どれか一つでも空白の場合は  チェックボックスがグレーアウトしている、という状態はできますか。 4.ユーザーフォームで入力した内容がExcel上にどんどん   追加していく時のマクロはどのように記述したらいいのですか。  (ユーザーフォームに入力した内容を、セルを指定せずにどんどん  追記していく方法) 質問が多くて申し訳ございませんが、よろしくお願い致します。

  • エクセルVBAのユーザーフォーム

    こんばんは、エクセルVBAでユーザーフォームを作成しました。 そこに入力したものがブックに反映するわけですが、フォームに0(ゼロ)を入力した場合、ブック上のセルを選択すると0と入っているのですが、表示されません。なぜでしょう???? これができないとせっかく時間をかけて作ったのに、使えません。どなたかご存知の方よろしくお願いします!!!!

  • エクセル VBA ユーザーフォームで検索したいのですが

    つい昨日触り始めた大初心者です。。 エクセルシートにて 数値を記した列と、詳細を記した列があります。 ユーザーフォームにて textboxに数値を入力し、ボタンをクリックすると 検索をして、ユーザーフォーム内のlabelに詳細が表示される、といったvbaを書いているのですが、どうにもうまくいきません。 また、textboxに検索範囲にない数値が入力されたときには Labelに「なし」と表示させたいのですが、 エラーが出てしまい、その処理もやはりうまく出来ません。 どなたかご教授いただけますでしょうか。

  • ユーザーフォームいろいろについて

    いろいろ手探りでVBAでユーザーフォームを作成し コマンドボックスによりテキストボックスを指定のセルへ転記し ユーザーフォームを終了させるという簡単ですがプログラミングをしました。 さらに、下記のことができたらと思ってるのですがどうしたら良いのかわかりません。 1.2種類のユーザーフォームを作成し、ファイルを開くと  選択肢ウィンドウが現れ選択したほうのユーザーフォームが開く 2.チェックボックスまたはラジオボタンで選択された項目を  指定のセルへ○を反映させたい。 以上のことを加えたいのですが、できますでしょうか。 つたない説明ですが御回答の程宜しくお願い致します。

  • 特定のセルを選択した場合にユーザーフォームを表示したい

    エクセルVBAのユーザーフォームの表示方法について、ご教授お願いします。 例えば、A1:A100を選択した場合(クリックした場合)に、ユーザーフォームを表示したいのです。 UserFofm1.Showをどこに記述すれば、よいのでしょうか? よろしくお願いします。

専門家に質問してみよう