0

私はパスワード ジェネレーター Sub を持っています。それを関数に変更し、それをマクロで使用して、B2 で始まる列を生成し、その後の各セルは一意のパスワードです。

それが行う唯一のことは、私の B1 ヘッダー セルを削除することです。

ありがとう

私はサブを持っています:

Sub RandomPassword()
 Dim i As Integer

  For i = 1 To 8
    If i Mod 2 = 0 Then
        strPassword = Chr(Int((122 - 48 + 1) * Rnd + 48)) & strPassword
    Else
        strPassword = Int((9 * Rnd) + 1) & strPassword
    End If
 Next i
 MsgBox strPassword
End Sub

私の試みとそれを関数に変える:

Function RandomPassword(strPassword As String) As String
 Dim i As Integer

 For i = 1 To 8
    If i Mod 2 = 0 Then
        strPassword = Chr(Int((122 - 48 + 1) * Rnd + 48)) & strPassword
    Else
        strPassword = Int((9 * Rnd) + 1) & strPassword
    End If
 Next i
End Function

私の呼び出し:

Sub qqq()

    Dim rng As range
    Dim lastRow As Long

    With Sheets("sheet1")
        lastRow = .range("B" & .Rows.Count).End(xlUp).Row
    End With

    For Each rng In Sheets("Sheet1").range("B2:B" & lastRow)
        rng.Value = RandomPassword(rng.Value)
    Next
End Sub
4

2 に答える 2

1

の直前に、関数に追加の行が必要ですEnd Function

RandomPassword=strPassword

そうしないと、関数に値がなくなり、セルが空になります。

于 2013-05-19T19:19:04.493 に答える
1

strPassword変数の値を関数に割り当てる必要がありますRandomPassword

Function RandomPassword(ByVal strPassword As String) As String
    Dim i As Integer

    For i = 1 To 8
        If i Mod 2 = 0 Then
            strPassword = Chr(Int((122 - 48 + 1) * Rnd + 48)) & strPassword
        Else
            strPassword = Int((9 * Rnd) + 1) & strPassword
        End If
    Next i

    RandomPassword = strPassword
End Function


また、以下の手順では、最後に使用された行を取得column Bし、ランダムなパスワードで上書きしています。代わりに、最後に使用された行を取得する必要があるように感じますcolumn A

Sub qqq()

    Dim rng As range
    Dim lastRow As Long

    With Sheets("sheet1")
        lastRow = .range("A" & .Rows.Count).End(xlUp).Row
    End With

    For Each rng In Sheets("Sheet1").range("B2:B" & lastRow)
        rng.Value = RandomPassword(rng.Value)
    Next
End Sub
于 2013-05-19T19:19:49.983 に答える