![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
いつも回答は読ませていただいております。
私は、今回のような質問を、ずっと続けているのですが、今回、返事を付けるのが遅くなってしまいました。
>ランダムに指定したセルの内容(テキスト)を表示するには
>B2~B51 には、全角文字で、10~20文字が入力されています。
ランダムはランダムでも、「重複を許さないランダム」なのでしょうね。
そこで、今までとは違う、ランダム・パレット方式を利用した方法を試したいと思いました。乱数であっても、決められたパレット(組み合わせ)を何度も使う疑似乱数です。
しかし、その乱数が日替わりなのです。例えば、暗記用には最適かと思います。
少し、私のアレンジが過ぎていたら、おっしゃってください。
度が過ぎるかもしれません。
'//
Dim rndPalate(49)
Dim stopFlg As Boolean
Dim cnt As Long '←これは、Public cnt として、標準モジュールの方がよいかもしれません。
Private Sub CommandButton1_Click()
Dim wTime As Date
Dim tSec As Long '待ち時間
Dim i As Long, j As Long
tSec = Val(Range("A1").Value)
If tSec = 0 Then MsgBox "秒数が、A1にありません。", vbCritical: Exit Sub
If tSec > 59 Then MsgBox "値が多すぎるかもしれません。60より下", vbExclamation: Exit Sub
CommandButton2.BackColor = &H8000000F
wTime = TimeSerial(0, 0, tSec)
For i = cnt To UBound(rndPalate)
j = rndPalate(i)
TextBox1.Text = Cells(j + 1, 2).Value
DoEvents
Application.Wait Now() + wTime
If stopFlg Then Exit For '中止ボタンで止まる
cnt = i '再開の時に、次から読む
Next i
stopFlg = False
End Sub
Private Sub CommandButton2_Click()
stopFlg = Not stopFlg
If stopFlg Then
CommandButton2.BackColor = &HFF& 'ボタンが受けられたら、赤に変わる
Else
CommandButton2.BackColor = &H8000000F
End If
End Sub
Private Sub UserForm_Initialize()
Dim j As Long, i As Long
Dim ret
Rnd -1: Randomize Day(Date) '一日だけ同じの乱数
Do
j = Int((Rnd() * 50)) + 1
ret = Application.Match(j, rndPalate, 0)
If IsError(ret) Then
rndPalate(i) = j
i = i + 1
End If
ret = ""
Loop Until i >= 50
cnt = 0
CommandButton2.BackColor = &H8000000F
End Sub
![「エクセル ユーザーフォームに、ランダムに」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/1138040_5a682569b22f1/M.jpg)
早速のご回答、ありがとうございます。
インフルエンザに罹患してしまって、少しの間PCからはなれます。
学習して、お礼は改めて。とりあえず、礼を失しては申し訳ないので。
ありがとうございました。
No.2
- 回答日時:
構想が膨らんでいるようで何よりです。
では、こんなのはいかがでしょうか?ユーザフォームをModelessで表示することにより、表示中でも普通にExcelの操作ができます。
下記のコードを張り付けてから、UserFormShow を実行するとユーザフォームが表示されます。
【標準モジュール】
Public myTime As Variant
Sub UserFormShow()
UserForm1.Show vbModeless
Call UpdateTextbox1
End Sub
Sub UpdateTextbox1()
Dim r As Long
r = WorksheetFunction.RandBetween(2, 51)
UserForm1.TextBox1.ControlSource = "Sheet1!B" & r
myTime = Now + TimeSerial(0, 0, Sheets("Sheet1").Range("A1"))
Application.OnTime myTime, "UpdateTextbox1"
End Sub
【フォームモジュール】
Private Sub UserForm_Terminate()
Application.OnTime myTime, "UpdateTextbox1", Schedule:=False
End Sub
ママチャリ様
ご回答ありがとうございます。
なるほど、そうなのですね!
ちょうど、かゆいところに手が届かなくて、イライラし始めているところでした。
使わせていただきます。ありがとうございます。
今ひとつ、ユーザーフォームのテキスト表示が縦書きにできるとうれしいのですが。
横書きと縦書きのユーザーフォームを混在させることは可能でしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) エクセルの数式について教えてください。 2 2023/03/04 09:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) エクセルに代わる 表入力ツールについて 3 2022/12/21 21:19
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/07/08 13:46
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
参照先セルに値が入っていない...
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
エクセルで既に入力してある文...
-
IF関数で0より大きい数値が入力...
-
空白でないセルの値を返す方法...
-
ExcelVBAでセルを編集状態にす...
-
エクセルでの組み合わせ出力方...
-
Excelでセルに入力されたカラー...
-
エクセルで、特定のセルの内容...
-
エクセルで時間の判定をしてい...
-
マイナス同士の前年比
-
yyyy/mm/ddからyyyy/mmへの変換
-
excel 関数にて文字を0として認...
-
エクセルの数式がかぶって、選...
-
Excel:文字と数字の組合せ、次...
-
エクセル:コメントのようなも...
-
値を入力後、自動的にアクティ...
-
【Excel】セル内の時間帯が特定...
-
エクセルで、例えば「0402」な...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
A1セルに入力したら、入力時間...
-
Excelで同じセルに箇条書きをし...
-
参照先セルに値が入っていない...
-
IF関数で0より大きい数値が入力...
-
エクセルで既に入力してある文...
-
空白でないセルの値を返す方法...
-
Excelでセルに入力されたカラー...
-
Excel:文字と数字の組合せ、次...
-
値を入力後、自動的にアクティ...
-
エクセルで時間の判定をしてい...
-
yyyy/mm/ddからyyyy/mmへの変換
-
入力したところまでを自動的に...
-
エクセルで、特定のセルの内容...
-
エクセルの数式がかぶって、選...
-
エクセルで複数の条件で掛け算...
-
EXCELのセル上のURLを...
-
excel 関数にて文字を0として認...
-
エクセルの数式で計算結果に文...
-
マイナス同士の前年比
-
バーコードが読み取れない原因...
おすすめ情報
WindFller 様
ご回答ありがとうございました。インフルエンザも峠を越して落ち着きましたので、提示していただいたマクロを試行いたしました。
うまく実行できてうれしく思います。ありがとうございました。
ただ「アレンジが云々」は、浅学な私にはよく分かりません。どこがアレンジで、基本が何かが。
また
DoEvents
が正常に作用しているのかも、いまいち理解できておりません。
お教えいただいた方法を試行しているうちに、あれこれとドンドン欲が膨らんできています。
これから学習していきますので、ご指導のほどお願いします。