• ベストアンサー

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

エクセルの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