• ベストアンサー

エクセルVBAでのセル番地取得プログラム

このようなプログラムをVBAで作成したいのですが・・・。 1.選択セル上でダブルクリック 2.ユーザーフォームが立ち上がる 3.ユーザーフォームの項目に値を入力 4.コマンドボタンを押すと、入力した値が1で選択したセルに転送 5.次に1の1行下のセルに移動し、また値を入力しコマンドボタンで   値を転送 以下5の繰り返し というプログラムはどのように作成したら良いのでしょうか? 他の質問を参照したのですが、どうも求めているものとは違う感じです。 ご教授お願い致します。

  • na714
  • お礼率52% (43/82)

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

一番重要な部分の説明を抜かしては拙いですね。 Sheet1のセルをダブルクリックして、UserFormを表示 TextBoxの値を、ActiveCellとSheet2,3のセルに代入 Sheet1のA1をダブルクリックした場合 Sheet2では、B2~ Sheet3では、C3~ '---------------------------------------------  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   Cancel = True   UserForm1.Show End Sub '--------------------------------------- Private Sub CommandButton1_Click()  Dim R As Long  Dim C As Integer  R = ActiveCell.Row  C = ActiveCell.Column  ActiveCell.Value = TextBox1.Text  Sheets("Sheet2").Cells(R + 1, C + 1).Value = TextBox1.Text  Sheets("Sheet3").Cells(R + 2, C + 2).Value = TextBox1.Text  ActiveCell.Offset(1).Select  TextBox1.Text = ""  TextBox1.SetFocus End Sub '--------------------------------------------   ただ、実際には入力する列は決まっているはずなので その列のセルをダブルクリックしたときのみマクロが実行されるようにした方がいいのではと。   例えば、ダブルクリックする列は、Sheet1のA列のみだとすると '------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Column <> 1 Then Exit Sub     Cancel = True     UserForm1.Show End Sub '-------------------------------------  

na714
質問者

お礼

ありがとうございました。 大変参考になりました。 また機会がありましたら宜しくお願い致します。

その他の回答 (3)

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

こうゆう事? 'ワークシートモジュールへ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) UserForm1.Show End Sub 'ユーザーフォームへ Private Sub CommandButton1_Click() ActiveCell = TextBox1.Value ActiveCell.Offset(1).Select End Sub >他の質問を参照したのですが、どうも求めているものとは違う感じです。 この程度のこと、質問する人あまりいないでしょうから

na714
質問者

補足

ご回答ありがとうございます。 詳しい内容は、回答2に記載しましたが、取得したセルの番地を 基準に、それぞれのワークシートの決められたセルへ値を転送しよう かと考えています。 たとえば、シート1の(A、1)を基準にした場合、シート2の(B、2) に値を転送する時に基準にしたセルから1列と1行移動した箇所へ、 これをシート3・4・・と展開したいと考えてます。 そしてユーザーフォームの一通りの項目を入力し、コマンドボタンで 各シートに値を転送したあと、次のユーザーフォームの入力で、自動的 に各シートの最初の位置から、1行下へ入力箇所を移動してこれを繰り 返していくという機能のものです。 長々とすいませんが、再度ご回答して頂けると助かります。

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんにちは、 読んでみると、だた、セルに普通に数字を入れたほうが 良い様な、、、 わざわざ、ユーザーフォームを利用する意味が 見えません。 普通に 1.選択セル上でダブルクリック 普通にセルをダブルクリック 2.ユーザーフォームが立ち上がる 省略、 3.ユーザーフォームの項目に値を入力 省略 4.コマンドボタンを押すと、入力した値が1で選択したセルに転送 選択したセルに値を入れる。 5.次に1の1行下のセルに移動し、また値を入力しコマンドボタンで   値を転送 以下5の繰り返し 選択セルに値を入れたら、リターンで、一行したのセルに移動。。 結果は、どのように、違うのですか。??

na714
質問者

補足

アドバイスありがとうございます。 文章が長くなるのもどうかと思い、かなり省略して質問しました。 「わざわざ、ユーザーフォームを利用する意味が見えません。」 これは、ワークシートが全部で4枚あり、そのシートのそれぞれの 項目にユーザーフォームから一度に値を転送しようと考えています。 その際に、あるワークシートの基準となるセルの番地を取得し、 その番地からそれぞれのワークシートの何行目の何列目に値を転送 するべきかをプログラムしたいと考えてです。 確かにそれぞれに値を直接入力する方が良いのかも知れませんが、 シート・入力位置の選択をする手間を省けたらと思っています。 よい方法がありましたら、再度ご回答して頂けたら助かります。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

番地を取得しなくても値を転記することはできます。 ActiveCell.Value = Me.TextBox1.Text

関連するQ&A

  • エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされて

    エクセルVBAマクロで、一度テキストポックスに入力した値がコピーされてしまう VBAマクロ初心者です。 エクセルVBAマクロで、以下の様なプログラムを作成し計算させていますが、 一度入力した値がテキストポックスに残ってしまい、なんとかならないかなと 思っています。 (1)複数シートにそれぞれコマンドボタンを配置し、クリックすると同じユーザー フォームが立ち上がるようになっています。 (2)そのユーザーフォーム内に、テキストボックスが複数あり、それぞれ値を入力 して計算スタートさせると、ワークシートの1行目から数千行目まで計算して 各行に計算結果を表示します。 (計算は、既に各行に入力済みのデータとこのテキストボックスの値を元に算出されます) (3)次に、別のシートでコマンドボタンをクリックし、ユーザーフォームを立ち上げると、 前のシートで入力した値がそのまま各テキストボックスに入ってしまいます。 (これは、必ず起こる訳ではなく、時々起こるのですが、起こる場合は、コマンドボタン をクリックしてからユーザーフォームが立ち上がるまでの時間が若干短い感じがします) ※一度、上記の計算をさせるとテキストボックスの値がそのシートの特定のセルに入り、 次回ユーザーフォームを立ち上げた際に、テキストボックスに入るようになっています。 (Private Sub UserForm Initialize を使っています) パソコンの構造を、私はよく知らないのですが、おそらく、一度テキストボックスに値 を入力して計算させると、どこかのメモリにそれが残っていて、次にユーザーフォーム を立ち上げた際にそれが入ってしまうのかな、と思っています。 (ただし、もし前の値が入ってしまったとしても、一度そのユーザーフォームを消して から、再度立ち上げると、正常な値(そのシートの特定のセルを参照)が必ず入ります) 何か、プログラムにより、このメモリ?を消す?、あるいはうまく解決する方法など 考えられませんでしょうか? もし、詳しい方がおられましたら、御教示いただけませんでしょうか。 よろしくお願いいたします。

  • エクセルVBAの質問です。

    エクセルVBAでユーザーフォーム上からセルを選択したいのですが、可能でしょうか? 当初はユーザフォーム上のボタンにRange("a1").selectを入れておき、ボタンをクリックするとA1セルが選択状態になり、キーボードで入力できると思ったのですが、駄目でしたorz とまぁユーザーフォーム上のボタンを押すとキーボードでセルに直接入力ができる状態にしたいです。 アドバイスの程よろしくお願いします!

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

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

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

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

  • excelでVBAでユーザーフォームのリストBOX

    下記VBAの作成の仕方を教えていただけないでしょうか。 やりたいこと (1)sheet2のA1セル~A5セルまでの間の間をユーザーフォームのリストボックスに登録する (2)sheet1のA1セルをクリックすると、ユーザーフォームが起動し、任意のリストをクリックすると、 その値がA1セルに格納され。ユーザーフォームが終了する。 ※コマンドボタンは使わずにお願いします。なおexcel2000です。

  • エクセルVBAでコンボボックス

    エクセルVBAのコンボボックスの使い方について質問します。 実現したいプログラムは 「チェックボックスから選んだ数字で計算するプログラム」 です。 具体的には… まず、コンボボックスをシート上に配置します。そのコンボボックスには 数字の1から10を選べるようにしておきます。 次に、コマンドボタンを配置します。これは単にプログラムをスタート させる目的です。 ユーザーは、まずコンボボックスから好きな数字を選択します。 そしてスタートボタン(コマンドボタン)を押します。 すると、選んだ数字の2倍がセルに表示されます。 さらに発展系としては… チェックボックスを4つ配置します。各チェックボックス には、+、-、×、÷を割り振っておきます。 また、コンボボックスを2つ用意し、それぞれ1~10の数字をリストにします。 ユーザーは、チェックボックスから好きな記号を選び、さらにコンボボックスから 好きな数字を選びます。そしてスタートボタンを押すと、選んだ数字を選んだ記号 で計算した値がセルに表示されます。 というようなプログラムを考えているのですが、うまくできません。 ポイントは、 ・チェックボックスにリストを入力する方法 ・チェックボックスの選択状態や、リストボックスから選ばれた数字を、  変数として取得する方法 インターネットで調べているのですが、リストボックスに値を入れるのにもマクロを走らせ なければならない方法とか、ユーザーフォームでの説明ばかりでなかなか実現に至りません。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform05.html プログラムのイメージ図としては添付の図の通りです。 どのようにプログラムを書けばいいのでしょうか。

  • Excel VBAでは可でユーザーは入力不可のセル

    C5のセルはユーザーが入力できて、 C5セルに入力された値に応じてVBAで C7セルに処理した値を表示させたいのですが、 C7のセルはユーザーは入力(選択)できないようにしたいのです。 具体的には、 C5セルの書式設定の保護タブのロックを解除して ホームタブのセルグループの書式▼でシートの保護を選択して 表示される「シートの保護」のダイアログで デフォルトのままOKボタンをクリックすると C5セルのみ入力できて C5セル以外は入力できなくなります。 ユーザーにはこの状態にしておきたいのですが、 VBAでC7セルに入力できるようにする方法はないでしょうか。 (Windos7, Excel2010)

  • Excel VBAプログラム終了時に、

    Excel2016でVBAのプログラムを終了しようとすると、自動的にコードが書かれている画面に移ってしまいます。 ユーザーフォームを使用しているのですが、終了する際にそのフォームだけ消したいです。 プログラムにどうやって書けばいいでしょうか? ちなみに終了するときは「終了ボタン」を押してプログラムを終了させるようにしています。(画像参照)

  • VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に

    VBE、ユーザーフォームに関して質問があります。VBAを知って1カ月に満たない初心者です。 ユーザーフォームでテキストボックスとコマンドボタンを1つずつ作りました。コマンドボタンを押すとテキストボックスに入れた文字・値がセルB1に入力されるようにしました。続けてテキストボックスに文字・値を入力し、コマンドボタンを押すとB2に入力されるようにしています。 ここからが質問なのですが、 コマンドボタンを押したときにA1に番号を順にふり、さらにセルを罫線で囲みたいのです。図で示すと、  A   B        A   B  _ ___      _ ___  |1|りんご| ⇒ |1|りんご|  - ---      - ---               |2|みかん|                - ---   このような感じです。また、外枠のみを太線にするということが可能であればその方法も教えて下さい。

  • Excel VBA ある値が入力されたときだけユーザーフォームを出したいです

    ExcelのVBAを教えてください。 D15は、リストで入力する値を選択できるようになっています。 D15で選択された値によって、B15に反映されるようになっています。 たとえば、 D15の値をリストで105を選んだら、B15に「AAA」と入り、 D15の値をリストで109を選んだら、B15に「ccc」と入ります。 これらは、B15にIF関数が入っていて制御されています。 ところが、D15の値をリストで108と選んだ時だけ、B15に「BBB」と入る場合と「DDD」と入る場合の2パターンあり、これは人間の判断でどちらにするか考えるので、IF関数を使えません。 なので、 D15のリストボックスで108を選んだときだけ、 ユーザーフォームを出し(UserForm1.Show)、ユーザーフォームにBBBとDDDのコマンドボタンがあって、Tabでコマンドを選択し、Enterで確定し(マウスは使いたくない)、確定したコマンドの値をB15に反映させるようにしようと思いました。 ・・・が、ユーザーフォームを出すタイミングのVBAの組み方がわかりません。 D15の値をリストから選択する・・・というのは、他の方が作った仕組みなので変えることはできません。

専門家に質問してみよう