• ベストアンサー

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

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

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

  • ベストアンサー
  • 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