- ベストアンサー
文字列のランダム表示のVBA(エクセル)
A1をダブルクリックすると、A1に7つの文字列がランダムに表示される。 追加条件として、先頭の文字は"a""c""f""h""k""9"に限定される。 2文字目から最後の文字までは、"0""1""2""5""6""7""8""x"に限定される。 例として、 f010156 a666082 k702x15 9xx7587 上記のVBAを教えていただきたいのですが。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 ANo1さんとの違いは、 ダブルクリックでセルが編集状態になるのをとめたことと、 毎回違った乱数系列を発生させるために、Rnd関数を呼ぶ前に Randomize ステートメントを使用したことです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim myAr1, myAr2 '変数宣言 Dim myRnd As String If Target.Address <> "$A$1" Then Exit Sub 'A1以外停止 Randomize '乱数初期化 myAr1 = Split("a,c,f,h,k,9", ",") '先頭文字候補配列 myAr2 = Split("0,1,2,5,6,7,8,x", ",") '後続文字候補配列 myRnd = myAr1(Int(Rnd * 6)) '1文字目 For i = 1 To 6 '2文字目以降 myRnd = myRnd & myAr2(Int(Rnd * 8)) '2~7文字目 Next i '繰り返し Target.Value = myRnd '値入力 Cancel = True '編集状態停止 End Sub
その他の回答 (1)
- mshr1962
- ベストアンサー率39% (7417/18945)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MJ1 = "acfhk9" '1文字目の文字列 MJ2 = "0125678x" '2文字目以降の文字列 If Target.Address = "$A$1" Then 'A1限定 MJ3 = Mid(MJ1, Rnd * 5 + 1, 1) '1文字目確定 For i = 2 To 7 '2文字目以降の繰り返し MJ3 = MJ3 & Mid(MJ2, Rnd * 7 + 1, 1) '2-7文字目の確定 Next i Target.Value = MJ3 'セルに値セット End If End Sub
お礼
希望どおりのことができました。 ありがとうございました。
お礼
大変参考になりました。 ありがとうございました。