簡體   English   中英

根據另一個單元驗證單元輸入

[英]Validating Cell Input Based on Another Cell

當我在單元格中輸入某些文本時,例如在單元格B2- test ,我希望在單元格A6中輸入以此字符串開頭並以_VAR1結尾(例如test_VAR1

我找到了一個簡單的公式公式- =IF(A2="test","test_VAR1")但我想將其作為VBA代碼。

那么有什么想法可以做到嗎?

這是我能想到的最簡單的例子。 LCase(Range("B2"))還將考慮“ Test”和“ TeSt”:

Option Explicit

Public Sub TestMe()

    With ActiveSheet
        If LCase(.Range("B2")) = "test" Then
            .Range("A6") = .Range("B2") & "_VAR1"
        End If 
    End With

End Sub

並且,如果您要檢查工作表的每個事件,請將您的代碼放在相應的工作表中(下圖上的Sheet1,Sheet2和Sheet3):

在此處輸入圖片說明

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Me.Range("B2")) Is Nothing Then Exit Sub

    Application.EnableEvents = False

    If LCase(Target) = "test" Then
        Me.Range("A6") = Target & "_VAR1"
    End If

    Application.EnableEvents = True

End Sub

我知道您在您的問題中說過您想要宏,但是我不會發布自己的宏(因為我覺得@Vityata的答案應該足夠了)

但是,我從您的帖子中得到的印象是,您可以調整/改進公式,而完全避免使用宏。 通常出於兼容性原因,最好避免使用宏(許多用戶默認情況下禁用宏)

  1. 如果您只是想在輸入中添加關鍵字“ _VAR1” ,請改用以下公式
    =LTRIM(B2) & "_VAR1"

  2. 如果輸入可以是任何內容,則包含單詞“ test”
    =IF(ISNUMBER(SEARCH("test", TRIM(LOWER(B2)))), LTRIM(B2) & "_VAR1", "Incorrect Input")

  3. 文字僅包含“測試”一詞,不含其他內容
    =IF(TRIM(LOWER(B2))="test", LTRIM(B2) & "_VAR1", "Incorrect input"

您可以使用其他一些變體/技巧,但是這些是您可以用作“構建模塊”的一些最基本的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM