Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


635 / 13645 ツリー ←次へ | 前へ→

【79327】RANDBETWEENについて あああああ 17/7/18(火) 22:27 質問[未読]
【79328】Re:RANDBETWEENについて カリーニン 17/7/18(火) 22:41 発言[未読]
【79329】Re:RANDBETWEENについて カリーニン 17/7/18(火) 22:44 発言[未読]
【79330】Re:RANDBETWEENについて カリーニン 17/7/18(火) 22:57 発言[未読]
【79331】Re:RANDBETWEENについて カリーニン 17/7/18(火) 23:06 発言[未読]
【79332】Re:RANDBETWEENについて カリーニン 17/7/18(火) 23:51 発言[未読]
【79333】Re:RANDBETWEENについて あああああ 17/7/19(水) 23:22 お礼[未読]
【79334】Re:RANDBETWEENについて カリーニン 17/7/26(水) 0:20 発言[未読]

【79327】RANDBETWEENについて
質問  あああああ  - 17/7/18(火) 22:27 -

引用なし
パスワード
   VBA初心者です。

早速お聞きしたいのですが、Sheet1のB2からU21の範囲でランダムに0か1の値を表示させたくて以下のように記述しました。

Sub Macro()
  Sheets("Sheet1").Range("B2:U21") = RandBetween(0, 1)
End Sub

ですが、実行しようとするとコンパイルエラーが表示されてどこを直せばいいのか分かりません。
すみませんが回答のほどお待ちしております。

【79328】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:41 -

引用なし
パスワード
   まず、基本書やヘルプ、解説サイトで勉強することをお勧めします。
正直言って、書き方がめちゃくちゃです。

Worksheets("Sheet1").Range("B2:U21").FormulaR1C1 = "=RandBetween(0, 1)"

これは、数式を埋め込んでますが、VBAで直接乱数を発生させることも可能です。

【79329】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:44 -

引用なし
パスワード
   参考HPです。

ht tp://excelwork.info/excel/funcrnd/

【79330】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:57 -

引用なし
パスワード
   ワークシート関数を直接使う場合は↓のように書きます。

Sub test2()
Dim c As Range
Dim r As Range
Set r = Worksheets("Sheet1").Range("B2:U21")
For Each c In r
 c.Value = WorksheetFunction.RandBetween(0, 1)
Next c
Set r = Nothing
End Sub

【79331】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 23:06 -

引用なし
パスワード
   式を残したくない場合は、↓のようにしてください。

With Worksheets("Sheet1").Range("B2:U21")
 .FormulaR1C1 = "=RandBetween(0, 1)"
 .Value = .Value
End With

【79332】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 23:51 -

引用なし
パスワード
   ↓も参考になると思います。

ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_10.html

最初の

>Sheets("Sheet1").Range("B2:U21") = RandBetween(0, 1)

これは、Rangeオブジェクトのプロパティが省略されてますので、

Sheets("Sheet1").Range("B2:U21").Value = RandBetween(0, 1)

と同じことになります。Rangeオブジェクトのプロパティが省略されると、
デフォルトであるValueプロパティと判断されます。

今度は、右辺の

>RandBetween(0, 1)

は""で括られてないので、変数として宣言してない限り、エラーとなります。

式を埋め込む場合は

= "=式"

と代入してやります。

【79333】Re:RANDBETWEENについて
お礼  あああああ  - 17/7/19(水) 23:22 -

引用なし
パスワード
   ご丁寧に説明していただきまして、ありがとうございました。
載せてくださったサイトを参考に勉強します。

【79334】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/26(水) 0:20 -

引用なし
パスワード
   もう一つ方法があるのを忘れてました。

[B2:U21] = "=RANDBETWEEN(0, 1)"

635 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free