Excel VBA質問箱 IV

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

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


62746 / 76738 ←次へ | 前へ→

【18593】Re:コピー&ペーストについて
質問  ponpon  - 04/9/30(木) 19:14 -

引用なし
パスワード
    こんにちは。
 コピペについては、うまくいきました。ありがとうございました。
 漢字にする部分と送りがなのある部分ときちんと分けて表示することができました。
 疑問の残るところはありますが……
 
 ついでにといっては何ですが、乱数(重複なし)のことです。
ネット上で見つけた下記のコードですがどうも怪しいです。時々同じ数字がでるような気がするのです。
 
Sub rannsuu()
Dim i As Integer
Dim n As Integer
Dim stri(1 To 20) As String
Dim p As Integer
Dim t As Integer
Dim numtmp As String

For p = 1 To 20
t = 99
i = Int(Rnd * t) + 1
  If i < 10 Then
    stri(p) = "0" & i
  Else
    stri(p) = i
  End If
 numtmp = stri(p)

 Do While InStr(1, numtmp, stri(p)) > 0   'numtmpにstriが含まれてる間シャッフルを繰り返す
  i = Int(Rnd * t) + 1
  If i < 10 Then
    stri(p) = "0" & i 'この処理を行わないと完全にシャッフルにならないっぽい
  Else
    stri(p) = i
  End If
 Loop
Next
End Sub
 

 過去ログに(コレクションを使った方法)もあったのですが、

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=15434;id=excel

コレクションを理解していないためによくわかりませんでした。 

そこで、セルを使った方法を考えました。

Sub 乱数2()
  Dim rndNO As Integer
  Dim myRange As Range
  Dim hani AS Range
  Dim p As Integer
  Dim t As Integer

  For p = 1 To 20
   t = 30   
   Set myRange = Sheet4.Cells(p, 1)
   Set hani = myRange.CurrentRegion
      
   Randomize
   rndNO = Int(Rnd() * t) + 1  '1からtまでの乱数の発生
      
   Do Until WorksheetFunction.CountIf(hani, rndNO) < 2 '同じ数字が出たら、                                 違うまでループ
   rndNO(p) = Int(Rnd() * t) + 1
   myRange = rndNO

   Loop
  Next

End Sub

 バッチリだったのですが、ここまでできたら、シートを使わないで何とかならないものかと、配列を使って考えたのですが、

  Dim rndNO(1 To 20) As Integer
  Dim intNO As Integer
  Dim p As Integer
  Dim t As Integer

  For p = 1 To 20
   t = 30
   Randomize
   rndNO(p) = Int(Rnd() * t) + 1  '1からtまでの乱数の発生
   intNO = rndNO(p)

   Do Until rndNO(p) <> intNO '同じ数字がでたら、違うまでループ
               ↑
        ここの式が思いつかないしわからない。

   rndNO(p) = Int(Rnd() * t) + 1
   intNO = rndNO(p)
     
   Loop

   Next
 コレクションを勉強したらなんていわないで、この配列を使って何とかならないものでしょうか。
 rndNO(p)が、今まで作った配列の中にあるかないかを調べるような式や関数をどなたか教えていただけないでしょうか? このコードからは無理ならば、諦めてシートを使います。
 よろしくお願いします。
0 hits

【18473】コピー&ペーストについて ponpon 04/9/27(月) 22:31 質問
【18474】Re:コピー&ペーストについて Asaki 04/9/27(月) 22:57 回答
【18475】Re:コピー&ペーストについて ponpon 04/9/27(月) 23:26 発言
【18476】Re:コピー&ペーストについて Asaki 04/9/28(火) 0:03 回答
【18477】Re:コピー&ペーストについて ponpon 04/9/28(火) 0:23 発言
【18478】Re:コピー&ペーストについて Asaki 04/9/28(火) 0:32 回答
【18479】Re:コピー&ペーストについて ponpon 04/9/28(火) 0:56 お礼
【18481】Re:コピー&ペーストについて ponpon 04/9/28(火) 10:34 質問
【18482】Re:コピー&ペーストについて Asaki 04/9/28(火) 11:05 回答
【18488】Re:コピー&ペーストについて ponpon 04/9/28(火) 12:55 お礼
【18593】Re:コピー&ペーストについて ponpon 04/9/30(木) 19:14 質問
【18603】Re:コピー&ペーストについて ichinose 04/10/1(金) 10:05 発言

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