Vba 基于另一个单元格验证单元格输入
当我在单元格中输入一些文本时,例如在单元格B2-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
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的答案应该足够了) 然而,我从你的帖子中得到的印象是,你可以调整/改进你的公式,完全避免使用宏。如果可能,出于兼容性原因,通常最好避免使用宏(许多用户默认禁用宏)
=LTRIM(B2)和“\u VAR1”
=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