基于另一个单元验证单元输入

时间:2018-06-12 10:37:12

标签: excel vba excel-vba

当我在单元格中输入一些文本时,例如在单元格B2 - test中,我想在单元格A6中输入以此字符串开头并以_VAR1结尾 - 例如test_VAR1

我找到了一个简单的解决方案 - =IF(A2="test","test_VAR1"),但我希望将其作为VBA代码。

所以想知道如何做到这一点?

2 个答案:

答案 0 :(得分:0)

这是我能想到的最简单的例子。 LCase(Range("B2"))也需要"测试"和#34; 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):

enter image description here

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

答案 1 :(得分:0)

我知道你在你的问题中说过你想要宏,但我不会发布我自己的(因为我觉得@Vityata的回答应该足够了)

但是,我从你的帖子中得到了印象,你可以调整/改进你的公式而完全避免使用宏。出于兼容性原因,通常最好避免使用宏(很多)用户默认禁用宏)

  1. 如果您只想将关键字“_VAR1”添加到输入,请使用以下公式代替
    =LTRIM(B2) & "_VAR1"

  2. 如果输入可以是任何内容,则包含单词“test”
    =IF(ISNUMBER(SEARCH("test", TRIM(LOWER(B2)))), LTRIM(B2) & "_VAR1", "Incorrect Input")

  3. 文字仅包含单词“test”,而不包含任何其他内容
    =IF(TRIM(LOWER(B2))="test", LTRIM(B2) & "_VAR1", "Incorrect input"

  4. 您可以使用其他一些变体/技巧,但这些是您可以用作“构建块”的一些最基本的示例