• ベストアンサー

ユーザーフォームに入力値を活用する方法

エクセルのマクロについて質問です。 (1)ユーザーフォームのテキストボックスに数字入力 (2)「アクティブセル」から「アクティブセルの列数+(入力した数字-1)」の列までのセルに背景色を付ける というようなマクロを作りたいです。 ユーザーフォームは設置できたのですがテキストボックスに入力した数字をセル選択に関連付ける方法がよくわかりません。 詳しい方がいらっしゃいましたらご教授いただければありがたいです。 例:アクティブセルが「G6」でテキストボックスには「3」と 入力した場合には G6、H6、I6の背景に色が付く

noname#76509
noname#76509

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

Sub test() Dim i, rng_r, rng_c As Integer i = 3 'textboxの値を入れる rng_r = ActiveCell.Row rng_c = ActiveCell.Column Range(Cells(rng_r, rng_c), Cells(rng_r, rng_c + i)).Interior.ColorIndex = 3 End Sub 基本はこんな所でしょうか

noname#76509
質問者

お礼

ありがとうございます。できました!

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

基礎的なことを習得できてなくて、他人に聞くという質問だ。 必要な知識は何が要るか考えましたか。 それは (1)ユーザーフォームのテキストボックスの値(文字列であることは知ってますかー>数値化) (2)テキストボックスの値を取るキッカケは (3)アクチブセルのセル番地の行、列を取得するコードでの表現 (4)づらしたセル番地のコードでの表現 (5)(3)から(4)の範囲のコードでの表現 が必要でしょう。 (2)などフォームを使うものの常識。Clickイベント (1)はUserForm1.TextBox1.Text これも常識。 数値化はVal() (3)はActivecel.row,ActiveCell.Column (4)Range(cells(・・),Cells(・・)) ^---- フォームにコマンドボタンを貼り付け セルのパターンを黄色にする例 Private Sub CommandButton1_Click() MsgBox UserForm1.TextBox1.Text cc = Val(UserForm1.TextBox1.Text) r = ActiveCell.Row c = ActiveCell.Column Range(Cells(r, c), Cells(r, c + cc - 1)).Interior.ColorIndex = 6 End Sub

noname#76509
質問者

お礼

ありがとうございます。前提知識もない状態の私にもわかりやすくご説明いただきありがとうございました。助かりました。

関連するQ&A

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

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

  • ユーザーフォームからセルに入力すると書式が限定される?

    ユーザーフォームを作成して、その中にあるテキストボックスに入力した文字列(具体的には100-200というように数字‐数字というタイプ)をエクセルのワークシートに入力すると月日表示になってしまいます。別に代入先のセルの書式を固定しているわけではないのですが・・。何でなのか心当たりのある方いらっしゃませんか?(^^;)

  • エクセルのユーザーフォームについて

    エクセルマクロのユーザーフォームのテキストボックスに セルの値を表示する方法で質問です。 ユーザーフォームを表示するとその時点での セルの値はテキストボックスに表示されているのですが ユーザーフォームを表示したまま 別のブックのセルを選んだ際に そのセルの内容がテキストボックスに表示されるようにしたいです。 ボタンや、なにかをするわけではなく 自分で任意のセルを選択したら、という事です。 ユーザーフォームには selectionchange などがないのでどうすれば良いかわかりません。 宜しくお願いします。

  • 【Excel VBA】ユーザーフォームについて

    Excel2003を使用しています。 Sheet1のある範囲のデータをSheet2に(アクティブセルに)コピーするというマクロを作成しました。 データをコピーする際、範囲中のいくつかのセル(2~3箇所ですが)のデータを書き換えて、コピーするときもあるため、変更箇所がある場合は入力モード等の関係もあるので、ユーザーフォームを使って、書き換えるようにしました。 コピー元の範囲を変えただけの同じようなマクロが複数あるのですが、テキストボックスやコンボボックスに入力されたデータをシートへ転記する際のセルの位置が変わるだけなので、ひとつのユーザーフォームを使いまわしというと変ですが、そのようなことはできないのかなと思い、質問させていただきました。 -------------------------------------------------------------- Private Sub CommandButton1_Click()   Range("F371").Value = TextBox1.Text   Range("N371").Value = ComboBox1.Text   Unload Me End Sub 上記コードは、ユーザーフォームのコードの一部ですが、 Range("F371").Value = TextBox.1Text      ↓ Range("F397").Value = TextBox.1Text のように、転記先のセルだけ変わればいいので、そのために、同じユーザーフォームをいくつも作るのも…と思った次第です。使いまわしのようなことはできなければ、コピーして作成しようと思っています。 うまく文章に表すことができなくて申し訳ないのですが、よろしくお願いします。

  • セルの値をユーザーフォームのテキストボックスに

    エクセルの質問です。 シート1にボタンを設置してユーザーフォームを呼び出すようにしています。 ユーザーフォームにテキストボックスを用意してて、シート1のセル(A1)に記入された数字を、ボタンを押した時に立ち上がったユーザーフォームのテキストボックスに表示されるようにしたいのですが、どうしたらいいのでしょうか?

  • ユーザフォーム(VBA)で入力した内容をシートへコピーするには

    ユーザフォーム(VBA)でテキストボックスとボタンを作成しました。 このテキストボックスに入力した内容をボタンを押すことでシート1のA1セルにコピーしたいのです。こんな簡単な感じなのですが、 プログラムはどのようにしたらよいのでしょうか?教えてください。 それと、このエクセルファイルを開き、マクロを有効にするのボタンを押すと思うのですが、そのときにすでにユーザフォームが表示されているようにしたいのですが・・・どうすればいいのでしょうか? ※できたらでよいのですが、もう一つボタンを作成し『クリア』ボタンということで、テキストボックスに入力した内容だけをクリアさせるボタンも作ろうとおもうのですが、それはどうしたらよいのでしょうか? 困っています。教えてください。

  • エクセル ユーザーフォームについて

    ユーザーフォームの各テキストボックスに それぞれ、200・500・600などの各数字をリストから選択します。 この各数字を シート上の 『1つのセル』 に 『200×500×600』 のように、記入するには、どのような方法になるのでしょうか? 宜しくお願いします。

  • ユーザーフォームを使った検索について

     仕事で使うために、VBAを勉強中ですが、検索の段階でつまずいてしまいました。自分なりに色々やってみたのですが、どうしてもうまくいきません。自分の知識不足が原因なのですが、どこをいじったらよいのかわからないでいます。  シート"一覧"にA列から整理No、職員番号、職種、氏名・・・・という風に、40列、130行程度データが入ります。 ユーザーフォームに複数のテキストボックスを作り、氏名を入力することで、任意のテキストボックスにその行のデータを返すようにしたいのですが、検索すると、アクティブセルの値が表示されます。  よろしくお願いします。

  • VBAのユーザーフォーム・・

    教えてください。 ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 このコマンドボタンには他のプログラムも入っており、同時にプログラムを実行したいのですが。

  • エクセルVBAで別のユーザーフォームに入力したい

    こんにちは! ユーザーフォーム1と2があって、ユーザーフォーム2上のテキストボックスで入力したデータをユーザーフォーム1のテキストボックスに入力したいのですが、どのようにすればよいでしょうか? アドバイスの程よろしくお願いいたします。