我正在尝试强制Excel中的特定范围的单元格自动将特定短语大写。
例如:我们通常输入萨博,引文等飞机的类型。我有一个VB脚本来强制正确的案例,但还有其他一些我们缩写,如DA20,CJ3等。
我想要的(如果这是可能的话)是长名称(如果使用的话)保持正确的情况但是如果他们键入特定的短语,我希望它忽略该脚本并允许它输入OR或auto capital前两个字符。
Diamond或DA20是可以接受的
引用或CJ3是可以接受的
我不想要的是懒惰输入
的人citation或cj3
diamond或da20
这可能吗?如果有必要,我愿意创建一个包含所有缩写的白名单。
我希望某种“IF”语句可以在VBA脚本上运行,但我不确定如何写这个。
答案 0 :(得分:0)
您可以使用Worksheet Change事件触发某些范围的自动更新。这要求用户部分输入所需的输入(他们需要退出单元格才能触发)并自动填充剩余部分。例如:
Public boolChanging As Boolean
Private Sub Worksheet_Change(ByVal rng As Range)
Dim strAutoFinish As String, iStartPos As Integer
'Exit unless updates occur when and where you want
If boolChanging Or rng.Row < 1 Or rng.Column <> 1 Or rng.Columns.Count > 1 Or rng.Rows.Count > 1 Then Exit Sub
If rng = "" Then Exit Sub 'This needs to be here in case multiple cells are editted
boolChanging = True
strAutoFinish = ";DA20;Diamond;CJ3;Citation;..."
iStartPos = InStr(UCase(strAutoFinish), ";" & UCase(rng))
If iStartPos > 0 Then
rng = Mid(strAutoFinish, iStartPos + 1, InStr(iStartPos + 1, strAutoFinish, ";") - iStartPos - 1)
Else 'Leave this part if you want it to delete invalid entries
rng = ""
End If
boolChanging = False
End Sub