Excel 在工作簿中添加此代码时收到错误
我有下面的代码,这是创建一个范围的数据验证,但每当我在工作簿中添加此代码。 收到此错误Excel 在工作簿中添加此代码时收到错误,excel,vba,Excel,Vba,我有下面的代码,这是创建一个范围的数据验证,但每当我在工作簿中添加此代码。 收到此错误“我们在打开工作簿时发现某些内容有问题”,但当我从工作簿中删除此内容时,它工作正常 当我点击Savetheupdateddataintheworkbook时,它提供了选择一个文件夹来保存文件的选项 有人能看看这是什么问题的代码 Dim list1 As Range Application.EnableEvents = False Dim validationForm
“我们在打开工作簿时发现某些内容有问题”
,但当我从工作簿中删除此内容时,它工作正常
当我点击Savetheupdateddataintheworkbook时,它提供了选择一个文件夹来保存文件的选项
有人能看看这是什么问题的代码
Dim list1 As Range
Application.EnableEvents = False
Dim validationFormula As String
Set list1 = Sheet3.Range("A1:A100")
Dim myCell As Range
For Each myCell In list1
If Not IsEmpty(myCell) Then
validationFormula = validationFormula & myCell.Value2 & ","
End If
Next
validationFormula = validationFormula & Chr(160)
With Sheet1.Range("C4:C2000").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
end with
可能是公式1的长度超过255个字符,但“公式1是数据验证方程的第一部分。值不得超过255个字符。”(来自MS docs validation.Add method(Excel)) 此代码可以正常工作:
Sub ver()
Dim list1 As Range
Application.EnableEvents = False
Dim validationFormula As String
Set list1 = sheet1.Range("A1:A100")
Dim myCell As Range
For Each myCell In list1
If Not IsEmpty(myCell) Then
validationFormula = validationFormula & myCell.Value2 & ","
End If
Next
validationFormula = Left(validationFormula, 255)
If Right(validationFormula, 1) = "," Then validationFormula = Left(validationFormula, Len(validationFormula) - 1)
With sheet1.Range("C4:C2000").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
End With
Application.EnableEvents = True
End Sub
可能是公式1的长度超过255个字符,但“公式1是数据验证方程的第一部分。值不得超过255个字符。”(来自MS docs validation.Add method(Excel)) 此代码可以正常工作:
Sub ver()
Dim list1 As Range
Application.EnableEvents = False
Dim validationFormula As String
Set list1 = sheet1.Range("A1:A100")
Dim myCell As Range
For Each myCell In list1
If Not IsEmpty(myCell) Then
validationFormula = validationFormula & myCell.Value2 & ","
End If
Next
validationFormula = Left(validationFormula, 255)
If Right(validationFormula, 1) = "," Then validationFormula = Left(validationFormula, Len(validationFormula) - 1)
With sheet1.Range("C4:C2000").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
End With
Application.EnableEvents = True
End Sub
请尝试下一种方式:
Dim list1 As Range
Application.EnableEvents = False
Dim validationFormula As String
Set list1 = Sheet3.Range("A1:A100")
validationFormula = Join(Application.Transpose(Application.index(list1, 0, 1)), ",")
With Sheet1.Range("C4:C2000").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
End With
Application.EnableEvents = True
End Sub
请尝试下一种方式:
Dim list1 As Range
Application.EnableEvents = False
Dim validationFormula As String
Set list1 = Sheet3.Range("A1:A100")
validationFormula = Join(Application.Transpose(Application.index(list1, 0, 1)), ",")
With Sheet1.Range("C4:C2000").Validation
.Delete
.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:=validationFormula
.IgnoreBlank = False
.InCellDropdown = True
End With
Application.EnableEvents = True
End Sub
权限是否设置为打开宏?使用宏另存为excel工作簿。在VBA代码中,确保没有自动打开功能-可能有一些代码正在崩溃。否。保存的宏在没有宏的情况下可以正常工作,在没有更新宏的情况下也可以正常工作。无论我在工作表或模块中更新上述宏,都会出现错误。是否设置了打开宏的权限?使用宏另存为excel工作簿。在VBA代码中,确保没有自动打开功能-可能有一些代码正在崩溃。否。保存的宏在没有宏的情况下可以正常工作,在没有更新宏的情况下也可以正常工作。无论我在表格或模块中更新上述宏时出现错误,都可以使用此代码的替代品@Ааааааааааа,也可以使用此代码的替代品@学习:很高兴我能提供帮助!但请注意:我使用了您的代码,但最后没有使用Application.EnableEvents=True。这意味着在运行代码后,应用程序不再启用事件。我现在添加这一行,再次查看代码……我明白你的意思了@FaneDuru谢谢你讲清楚了。@Learning:很高兴我能帮上忙!但请注意:我使用了您的代码,但最后没有使用Application.EnableEvents=True。这意味着在运行代码后,应用程序不再启用事件。我现在添加这一行,再次查看代码…我明白你的意思@FaneDuru谢谢你说得清楚。