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

Vba 基于另一个单元格验证单元格输入,vba,excel,Vba,Excel,当我在单元格中输入一些文本时,例如在单元格B2-test中,我希望在单元格A6中输入以该字符串开头,以\u VAR1结尾-例如test\u VAR1 我找到了一个简单的解决方案,如公式-=IF(A2=“test”,“test\u VAR1”),但我想将其作为VBA代码 你知道怎么做吗?这是我能想到的最简单的例子。 LCase(范围(“B2”)还将考虑“测试”和“测试”: Option Explicit Public Sub TestMe() With ActiveSheet

当我在单元格中输入一些文本时,例如在单元格B2-
test
中,我希望在单元格A6中输入以该字符串开头,以
\u VAR1
结尾-例如
test\u VAR1

我找到了一个简单的解决方案,如公式-
=IF(A2=“test”,“test\u VAR1”)
,但我想将其作为VBA代码


你知道怎么做吗?

这是我能想到的最简单的例子。
LCase(范围(“B2”)
还将考虑“测试”和“测试”:

Option Explicit

Public Sub TestMe()

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

End Sub
如果要检查工作表中的每个事件,请将代码放入相应的工作表中(下图中的表1、表2和表3):


我知道你在问题中说你想要宏,但我不打算发表我自己的(因为我觉得@vityta的答案应该足够了)

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

  • 如果只想在输入中添加关键字“\u VAR1”,请使用以下公式
    =LTRIM(B2)和“\u VAR1”

  • 如果输入可以是任何内容,包含单词“test”
    =IF(ISNUMBER(搜索(“测试”)、TRIM(下(B2))、LTRIM(B2)和“\u VAR1”、“输入不正确”)

  • 文本仅包含“测试”一词,没有其他内容
    =IF(微调(下(B2))=“测试”、LTRIM(B2)和“_VAR1”、“输入不正确”


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

    B2和A6之间的联系是什么?没有特定的联系,B2单元格位于ID值中,在列变量信息中作为变量传递。看起来是这样的,您可以使用一个公式来实现这一点-如果您只想将
    \u VAR1
    附加到B2中,则无需测试B2中的内容。只需使用一个公式即可at表示,取单元格B2的值并在末尾粘贴_VAR1。您是否计划在代码中使用
    test_VAR1
    作为变量?向LCase添加Trim可能是一个好主意,以考虑额外的空白
    Trim(LCase(.Range(“B2”))=…
    @Rawrplus-可能有一种方法可以使此算法更具动态性,并且可以处理单元格B2中的任何字符串?@Hris-删除if条件?在保存之前,我的
    方法没有问题,可能是因为禁用了事件
    
    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