• ベストアンサー

乱数表示のVBA(エクセル)

「エンターを押すと、A1に10桁の乱数が表示される」 上記のVBAを教えていただきたいのですが。 よろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

Sub enter() Application.OnKey "~", "macro1" End Sub Sub dis() Application.OnKey "~" End Sub Sub macro1() Range("A1") = Int(Rnd * 10000000000#) End Sub enterを実行するとそのようになり,disを実行すると止めます。 このマクロはキーボードのEnterとテンキーのEnterを見分けるので,使いやすいように変更して使ってください。 >10桁の乱数 の具体的に欲しい内容に応じて,適切に修正して利用してください。

rjdtng
質問者

お礼

希望どおりのことができました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

エクセルVBAでは、シートのイベントには「エンターを押すと」がないようだ。 また Private Sub Worksheet_Change(ByVal Target As Range) Range("A1") = Int(Rnd * 10000000000#) End Sub なんてすると、シートの何処にでも値を入れると、実行されてしまい、且つA1の変化でまた反応すると言うことになってしまうから注意。 だから質問の通りは無理があると思う。 何かダブルクリックでもにして、イベントの起こるセルをA1に限る(If Target.Address="$A$1" Thenのような)ことにしないとだめかな。乱数発生のキッカケをシートに設けたボタンクリックにするとか。

rjdtng
質問者

お礼

参考になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

ANo2のmerlionXXです。 10桁の乱数設定を誤ってました。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Address <> "$A$1" Then Exit Sub   Cancel = True   Target.Value = Int(Rnd * 9000000000#) + 1000000000 End Sub に訂正します。 A1セルをダブルクリックする都度、変わります。

rjdtng
質問者

お礼

参考になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

エンターキーではなく、A1セルをダブルクリックしたら~ の一例です。 標準モジュールではなくシートモジュールに書いてください。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Target.Value = Int((1 + Rnd) * 1000000000) End Sub

すると、全ての回答が全文表示されます。

関連するQ&A