Excel VBA質問箱 IV

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

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


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

【76014】パスワード生成時に数字1つ(0から9のいずれか)を含めて パスワード生成し... 初心者 14/8/20(水) 20:03 質問[未読]
【76015】Re:パスワード生成時に数字1つ(0から9のい... kanabun 14/8/20(水) 20:39 発言[未読]
【76016】Re:パスワード生成時に数字1つ(0から9のい... γ 14/8/20(水) 20:51 発言[未読]
【76017】Re:パスワード生成時に数字1つ(0から9のい... kanabun 14/8/20(水) 21:32 発言[未読]
【76018】Re:パスワード生成時に数字1つ(0から9のい... γ 14/8/20(水) 21:33 発言[未読]
【76019】Re:パスワード生成時に数字1つ(0から9のい... 独覚 14/8/21(木) 6:53 発言[未読]

【76014】パスワード生成時に数字1つ(0から9のい...
質問  初心者  - 14/8/20(水) 20:03 -

引用なし
パスワード
   パスワード生成時に必ず数字を含めてパスワードを生成したい

下記マクロで実行しておりますが、生成されるパスワードに数字が含まれない場合があります 
生成されるパスワードに数字を含めたいのですが、
どのようにすれば良いでしょうか?
ご教授下さい

EXCEL2010を利用しております

Sub Macro1()
Const DEFAULT_COLS = 8 ' パスワードの桁数
Const DEFAULT_NUM = 1 ' パスワードの個数
Dim cols As Integer
Dim num As Integer
Dim chars As String, password As String
Dim upper As Integer, pointer As Integer, i As Integer

Set MenuSheet = Worksheets("MENU")
Set PasswordSheet = Worksheets("password")

' パスワードの桁
cols = MenuSheet.Range("COLS").Value
If cols < 1 Then
cols = DEFAULT_COLS
End If

' パスワードの個数
num = MenuSheet.Range("NUM").Value
If num < 1 Then
num = DEFAULT_NUM
End If

' 文字種類
kind = MenuSheet.Range("KIND").Value
Select Case kind

Case "英字": chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Case "数字": chars = "0123456789"
Case "記号": chars = "!#$%&@?\+-_"
Case Else: chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&@?\+-_"

End Select
upper = Len(chars)

PasswordSheet.Activate
PasswordSheet.Range("A:B").ClearContents ' 前回の結果を消去
PasswordSheet.Range("A1").Value = "No."
PasswordSheet.Range("B1").Value = "パスワード"

For j = 1 To num
password = ""
Randomize
For i = 1 To cols
pointer = Int(Rnd * upper) + 1
password = password + Mid(chars, pointer, 1)
Next

PasswordSheet.Cells(j + 1, 1).Value = j
PasswordSheet.Cells(j + 1, 2).Value = password

Next


End Sub

最後まで見てくださりありがとうございました
宜しくお願い申し上げます

【76015】Re:パスワード生成時に数字1つ(0から9の...
発言  kanabun  - 14/8/20(水) 20:39 -

引用なし
パスワード
   ▼初心者 さん:

>生成されるパスワードに数字を含めたいのですが、
>どのようにすれば良いでしょうか?


これは
>' 文字種類
>kind = MenuSheet.Range("KIND").Value
>Select Case kind
>
>Case "英字": chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
>Case "数字": chars = "0123456789"
>Case "記号": chars = "!#$%&@?\+-_"
>Case Else: chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#$%&@?\+-_"
>
>End Select

文字種類が 「英字」とか「記号」だったら、何回作っても数字は混じって
こないから、文字種類が
>Case Else
のばあいを言ってるんですよね?

そのばあいだったら、数字が入るまでパスワード生成を繰り返せばいいのでは?

  For j = 1 To num
    password = Space$(cols) 'パスワードの桁数分のスペース
    Randomize
    
    k = 0
    Do
      For i = 1 To cols
        pointer = Int(Rnd * upper) + 1
        Mid(password, i, 1) = Mid(chars, pointer, 1)
      Next
      k = k + 1
    Loop Until password Like "*#*"
    
    With PasswordSheet.Cells(j + 1, 1)
      .Range("A1").Value = j
      .Range("B1").Value = password
      .Range("C1").Value = k  '参考のため 繰り返した回数
    End With
      
  Next

【76016】Re:パスワード生成時に数字1つ(0から9の...
発言  γ  - 14/8/20(水) 20:51 -

引用なし
パスワード
   回答者への参考として。
ht tp://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=163646&rev=0
ht tp://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=163842&rev=0

ちょっとひど過ぎない?

【76017】Re:パスワード生成時に数字1つ(0から9の...
発言  kanabun  - 14/8/20(水) 21:32 -

引用なし
パスワード
   ht tp://excelfactory.net/excelboard/excelvba/excel.cgi?mode=all&namber=163646&rev=0

なるほど。これはちょっと ひどい。

【76018】Re:パスワード生成時に数字1つ(0から9の...
発言  γ  - 14/8/20(水) 21:33 -

引用なし
パスワード
   まあ、今度は、自分が納得いくまで、とことん質問することですよ。
わかった積もりで先に進まないほうがいい。

【76019】Re:パスワード生成時に数字1つ(0から9の...
発言  独覚  - 14/8/21(木) 6:53 -

引用なし
パスワード
   ht tp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14130509349
これもそうかな?

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