2

Excel マクロ: 「ユーザー名 [コード例: Environ("Username")] がこの範囲内のいずれかの値と等しい場合 [例: ワークブックから作成した範囲: Range("Authorized_Users")] のコードを作成する方法。 .." ありがとう!

4

2 に答える 2

1

あなたの仕様は必要なコードに非常に近いです...

If Not IsError(Application.Match(Environ("Username"), [Authorized_Users], 0)) Then
于 2012-07-27T10:21:27.673 に答える
1

基本的には、書いたことを正確に実行する必要があります。現在、ソリューションに欠けているのは次の 2 つです。

  1. ユーザー名を取得する方法。
  2. 範囲で検索する方法。

エクセルはすでに優れた機能を提供しているため、どちらのタスクもそれほど難しいものではありません。

2 番目の点については、範囲を検索する関数を作成する必要があります。範囲内検索関数は次のようになります。

Function ExistsInRange(range As range, name As String) As Boolean
    ExistsInRange = False
    Dim resultRange As range
    If Trim(name) <> "" Then
        With range
            Set resultRange = .Find(What:=name, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not resultRange Is Nothing Then
                ExistsInRange = True
            End If
        End With
    End If
End Function

列 B のすべての行でユーザー名「jeff」を検索する場合、呼び出しは次のようになります。

If ExistsInRange( sheet.Range("B:B"), "jeff") Then 
于 2012-07-27T09:44:05.787 に答える