EGのスプレッドシートが2つあります。test1.xlxsおよびtest2.xlsm
test1のシート1セルB6には、次のデータがあります。testdata
test2には、test1が存在しないか、間違った情報が含まれている場合に無効にしたいvbaコードがいくつかあります。そのため、VBA IFステートメントで環境変数を使用して、コードを編集したり、再編集したりする必要がないようにする必要があります。新しいPCに移動するたびにシートをリンクします
私が抱えている問題は、環境変数を使用する場合、Ifステートメントがセル値ではなく文字列に対してテストすることですEG "= C:\ users \ username \ documents [test.xlxs] Sheet1 '!$ B $ 6"代わりにtestdata
これは私が現在test2に持っているコードです:
Sub Check_Key()
Dim Key As String
Key = "='" & Environ("USERPROFILE") & "\Documents\[test.xlxs]Sheet1'!$B$6"
If Key = Sheet1.Range("D8") = True Then
Sheet1.Range("D9") = "Valid"
Else
Sheet1.Range("D9") = "Invalid"
End If
End Sub
それを機能させる方法はありますか?ブックのセル内のifステートメントではなく、VBAスクリプトで検証を実行することをお勧めします。
要件:ユーザーはtest1のデータを表示できないようにする必要があります(スプレッドシートは閉じたままにする必要があります)test1のデータはVBA IFステートメントで検証する必要がありますtest2はPCのどこにでも配置でき、test1はドキュメントに含まれている必要があります
スプレッドシートへのリンクは次のとおりです。これには、ライセンスファイル、テストシート、およびキージェネレータドキュメントが含まれています。
次のコードは、閉じたブックからセルB6の値をコピーします。
Sub test()
'variables
Dim key As Variant, FolderName As String, wbName As String
FolderName = Environ("USERPROFILE") & "\Documents"
wbName = Dir(FolderName & "\" & "test.xlsx") 'Workbook name
key = GetInfoFromClosedFile(FolderName, wbName, "Sheet1", "B6")
End Sub
'Returns value in cell CREDIT: http://erlandsendata.no/?p=2106
Private Function GetInfoFromClosedFile(ByVal wbPath As String, wbName As String, wsName As String, cellRef As String) As Variant
Dim arg As String
GetInfoFromClosedFile = vbNullString
If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
If Dir(wbPath & wbName) = vbNullString Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)
'On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)
End Function
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加