我有以下代码
Set works1 = ThisWorkbook.Worksheets("Sheet1")
Set works2 = ThisWorkbook.Worksheets("Sheet2")
Set rangeval1 = works1.Cells(11 , 4)
Set rangeval2 = works2.Range("j322:j325")
With rangeval1.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="='" & works2.name & "'!" & rangeval2.Address "Line with the error"
End With
我无法弄清楚错误是什么,becoz代码似乎对我来说是正确的
答案 0 :(得分:0)
我猜你在运营商后缺少一个逗号。它应该是Add Type:= xlValidateList,AlertStyle:= xlValidAlertStop, Operator:= xlBetween, Formula1:=“='”& works2.name& “'!” &安培; rangeval2.Address。请让我知道
它将来自sheet2的值作为下拉列表
提取给我
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=("='" & works2.Name & "'!" & rangeval2.Address)
更新代码
Sub start()
Set works1 = ThisWorkbook.Worksheets("Sheet1")
Set works2 = ThisWorkbook.Worksheets("Sheet2")
Set rangeval1 = works1.Cells(11, 4)
Set rangeval2 = works2.Range("d2:d5")
With rangeval1.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=("='" & works2.Name & "'!" & rangeval2.Address)
End With
End Sub
答案 1 :(得分:0)
我不知道为什么Sriram的答案不适合你。
以下适用于我。
Option Explicit
Sub test()
Dim works1 As Worksheet
Dim works2 As Worksheet
Dim rangeval1 As Range
Dim rangeval2 As Range
Set works1 = ThisWorkbook.Worksheets("Sheet1")
Set works2 = ThisWorkbook.Worksheets("Sheet2")
Set rangeval1 = works1.Cells(11, 4)
Set rangeval2 = works2.Range("j322:j325")
With rangeval1.Validation
.Delete
.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="='" & works2.Name & "'!" & rangeval2.Address
End With
End Sub
注意顶部的Option Explicit,然后用类型声明每个变量。您可能已在代码中使用此功能。但很难说你在问题中发布了什么。
如果仍然无效,请检查您的工作表是否真的命名为Sheet1
和Sheet2
。
答案 2 :(得分:0)
注意:
我刚刚发现的一个错误,如果当前的Excel选择是一个图表,则无法使用VBA的void oddSwap(int *x, int *y) {
int temp = *x;
*x = *y * 5;
*y = temp * 5;
}
int main()
{
int x=5;
int y=3;
oddSwap(&x,&y);
printf("\n%d:%d", x,y);
return 0;
}
方法更改验证。
这可能是您面临的问题。
答案 3 :(得分:0)
我以前有同样的问题。问题是您需要激活要创建验证的工作表并选择它。最重要的是,您需要在要创建验证的范围内进行选择。
currentSheet.Activate
currentSheet.Range("A3").EntireRow.Insert
currentSheet.Cells("C3").Select
With currentSheet.Cells("C3").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween,
Formula1:="A,B,C,D"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.errorMessage = ""
.ShowInput = True
.ShowError = True
End With
答案 4 :(得分:0)
请确保您的工作表没有受到保护,如果这样,请取消保护工作表,然后重试,它将起作用!
答案 5 :(得分:0)
我遇到了这个问题,问题是它是第一次工作,但随后没有工作。问题是我试图将验证(.Validation.Add)添加到已经对其进行列表验证的单元格中。我必须排成一行以清除验证(.Validation.Delete)。