- ベストアンサー
エクセルVBAでのセル番地取得プログラム
このようなプログラムをVBAで作成したいのですが・・・。 1.選択セル上でダブルクリック 2.ユーザーフォームが立ち上がる 3.ユーザーフォームの項目に値を入力 4.コマンドボタンを押すと、入力した値が1で選択したセルに転送 5.次に1の1行下のセルに移動し、また値を入力しコマンドボタンで 値を転送 以下5の繰り返し というプログラムはどのように作成したら良いのでしょうか? 他の質問を参照したのですが、どうも求めているものとは違う感じです。 ご教授お願い致します。
- みんなの回答 (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 '-------------------------------------
その他の回答 (3)
- hige_082
- ベストアンサー率50% (379/747)
こうゆう事? 'ワークシートモジュールへ 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 >他の質問を参照したのですが、どうも求めているものとは違う感じです。 この程度のこと、質問する人あまりいないでしょうから
補足
ご回答ありがとうございます。 詳しい内容は、回答2に記載しましたが、取得したセルの番地を 基準に、それぞれのワークシートの決められたセルへ値を転送しよう かと考えています。 たとえば、シート1の(A、1)を基準にした場合、シート2の(B、2) に値を転送する時に基準にしたセルから1列と1行移動した箇所へ、 これをシート3・4・・と展開したいと考えてます。 そしてユーザーフォームの一通りの項目を入力し、コマンドボタンで 各シートに値を転送したあと、次のユーザーフォームの入力で、自動的 に各シートの最初の位置から、1行下へ入力箇所を移動してこれを繰り 返していくという機能のものです。 長々とすいませんが、再度ご回答して頂けると助かります。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 読んでみると、だた、セルに普通に数字を入れたほうが 良い様な、、、 わざわざ、ユーザーフォームを利用する意味が 見えません。 普通に 1.選択セル上でダブルクリック 普通にセルをダブルクリック 2.ユーザーフォームが立ち上がる 省略、 3.ユーザーフォームの項目に値を入力 省略 4.コマンドボタンを押すと、入力した値が1で選択したセルに転送 選択したセルに値を入れる。 5.次に1の1行下のセルに移動し、また値を入力しコマンドボタンで 値を転送 以下5の繰り返し 選択セルに値を入れたら、リターンで、一行したのセルに移動。。 結果は、どのように、違うのですか。??
補足
アドバイスありがとうございます。 文章が長くなるのもどうかと思い、かなり省略して質問しました。 「わざわざ、ユーザーフォームを利用する意味が見えません。」 これは、ワークシートが全部で4枚あり、そのシートのそれぞれの 項目にユーザーフォームから一度に値を転送しようと考えています。 その際に、あるワークシートの基準となるセルの番地を取得し、 その番地からそれぞれのワークシートの何行目の何列目に値を転送 するべきかをプログラムしたいと考えてです。 確かにそれぞれに値を直接入力する方が良いのかも知れませんが、 シート・入力位置の選択をする手間を省けたらと思っています。 よい方法がありましたら、再度ご回答して頂けたら助かります。
- DreamyCat
- ベストアンサー率56% (295/524)
番地を取得しなくても値を転記することはできます。 ActiveCell.Value = Me.TextBox1.Text
お礼
ありがとうございました。 大変参考になりました。 また機会がありましたら宜しくお願い致します。