我有几个下拉列表。它们包含一个简单的Y / N组合。
我有几个外部电子表格,我必须从中复制和粘贴数据。但是,外部spreadshhets中的Y / N列可能包含小写的y / n。或是/否文字。
如果文本值是y / n或是/否我喜欢它符合列表值Y / N
我尝试向细胞本身添加一个公式,但是我得到一个循环引用错误。
然后我尝试了一个VBA脚本:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler:
Dim cell As Range
If Target.Column = 9 Then
If (UCase(ActiveCell.Value) = "YES") Then
ActiveCell.Value = "Y"
ElseIf UCase(ActiveCell.Value) = "NO" Then
ActiveCell.Value = "N"
ElseIf UCase(Target.Value) = Empty Then
ActiveCell.Value = "N"
Else
ActiveCell.Value = UCase(ActiveCell.Value)
End If
End If
Exit Sub
ErrorHandler:
MsgBox "An error occured - error " & Err.Number & ": " & Err.Description
End Sub
这几乎可以将值从YES更改为Y等,并检查大写但是崩溃了。
答案 0 :(得分:0)
好的,vbs脚本似乎是要走的路。我不得不补充一下 一旦我执行了excel停止崩溃,我就得到了我正在寻找的结果。该文件的Application.EnableEvents。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler:
Dim cell As Range
If Target.Column = 9 Then
Application.EnableEvents = False
For Each cell In Target
If (UCase(cell.Value) = "YES") Then
cell.Value = "Y"
ElseIf UCase(cell.Value) = "NO" Then
cell.Value = "N"
ElseIf UCase(cell.Value) = Empty Then
cell.Value = "N"
Else
cell.Value = UCase(cell.Value)
End If
Next cell
Application.EnableEvents = True
End If
Exit Sub
ErrorHandler:
MsgBox "An error occured - error " & Err.Number & ": " & Err.Description
Application.EnableEvents = True
End Sub