Sub AからZで乱数を発生させる()
Dim 最大値 As Integer
Dim 最小値 As Integer
Randomize
最小値 = 1
最大値 = 10
Debug.Print Int((最大値 - 最小値 + 1) * Rnd + 最小値)
End Sub
---------------------------------------------------------
これを実行すると、1から10の間で乱数を発生させられるのですが、
AからZの間で乱数を発生させたい場合は、
このコードをどのようにすればいいでしょうか?
アドバイスよろしくお願いします。
No.5ベストアンサー
- 回答日時:
○基本の考え
A=0,B=1,...,Z=25
とすれば、
AからZまでの乱数 → 0から25の乱数
と考えることができます。
「発生させたい物を連続の数値に対応させる→乱数→数値から元の物に逆変換」
というのは、他にも応用が効きます。
○文字に特化すれば
コンピュータで扱う文字には、それに対応した番号が割り振られています。
VBAで使われる文字コードでは
A 65
B 66
C 67
..
Z 90
と連続で割り振られています。
そして、コード→文字列に変換するchr関数があります。
となれば
・発生させたい物を連続の数値に対応させる: 文字コードとして対応済み
・乱数: AからZの文字コードに相当する範囲を発生させる
・数値から元の物に逆変換: chr関数で文字列に
となります
No.3
- 回答日時:
環境がなくて試せないのでヒントだけ。
* 乱数の範囲を 65 ~ 90 にする
* 発生した乱数を変数 x に入れるとして、Chr(x) で 'A' ~ 'Z' の文字が取得できる
なぜそうなるかは次のページを読めばわかると思う。
アクセスVBA講座_関数編_文字列関数/05.文字列コードを操作する
http://www.geocities.jp/cbc_vbnet/function/mojir …
アスキーコードの一覧も参考に。
Access Study | Vol.9 VBA開発に役立つ資料集/アスキーコード一覧表
http://www.tsware.jp/study/vol9/vbanote_02.htm
質問文からは何のVBA(Excel か Access か。あとバージョン)かわからないけど、基本的な関数だから使えるんじゃないかな。
No.1
- 回答日時:
大まかに、1~26までの乱数を発生させて、その値にAの文字コード分を上乗せしてあげればA-Zの乱数?が生成できます
※もちろん最大値は26です
Dim 最大値 As Integer
Dim 最小値 As Integer
Dim a As Integer
Dim b As String
Randomize
最小値 = 1
最大値 = 10
a = Int((最大値 - 最小値 + 1) * Rnd + 最小値)
a = a + Asc("A")
b = Chr(a)
Debug.Print b
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 変数が思うように機能しません。ご教授願います。 7 2022/08/14 13:50
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- 統計学 風速を1秒刻みで推定する方法 6 2023/03/03 11:58
- Visual Basic(VBA) 乱数の表示 4 2022/10/12 10:43
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) VBA カゥントで数値の範囲を規制 1 2022/05/20 06:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セル内の文字列が日本語か英語...
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
std::stringからLPCWSTR型への変換
-
ExcelVBA実行後に時々落ちる
-
JIS → S-JIS コード変換するには
-
UNIXの文字について
-
画像データ(png)をcsvファイル...
-
英数字を含む文字列(0-9,A-Z)...
-
latin-1 (ISO-8859-1)への変換
-
CString ←→ BSTRの変換について
-
異なるOS間での通信の際、バイ...
-
Perlコードを、自動的にPHPコー...
-
C#でバイナリデータをテキスト...
-
sedで日本語の置換方法について
-
XMLデータの中の改行コードにつ...
-
pandas str型→int型変換
-
C言語でUTF-8コードで読み込ん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
std::stringからLPCWSTR型への変換
-
ExcelVBA実行後に時々落ちる
-
Symfowareでのデータ型変換につ...
-
COBOLによる全角・半角混...
-
ふりがなをアルファベット化す...
-
VS 2008(VB.NET)
-
Excelマクロにて30分単位の計算...
-
CASLⅡ 文字データから数値デー...
-
sedで日本語の置換方法について
-
S-JIS → JIS コード変換するには
-
フォームのコントロールのバッ...
-
JIS → S-JIS コード変換するには
-
VB.NETのコンソールアプリケー...
-
「髙(はしごたか)」を文字コー...
-
画像データ(png)をcsvファイル...
-
友人とのラインで 「~MBと書く...
-
2バイト文字をJEFからSJISに変...
おすすめ情報