標題:
[發問]
執行階段錯誤-2147417848(80010108) Automation錯誤
[打印本頁]
作者:
li_hsien
時間:
2015-4-22 13:46
標題:
執行階段錯誤-2147417848(80010108) Automation錯誤
本帖最後由 li_hsien 於 2015-4-22 13:48 編輯
小弟使用Excel 2003執行下方語法 發生執行階段錯誤-2147417848(80010108) Automation錯誤
以下語法是資料驗證使用下拉清單的操作
final_substance = Worksheets("Temp_Substance").Range("A65536").End(xlUp).Row
'建立Substance下拉選單
With Worksheets("規格比對表").Range("E4:E" & Range("C65536").End(xlUp).Row).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(""Temp_Substance!$A2:$A" & final_substance & """)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "請以下拉選單方式選取"
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
複製代碼
錯在這一行
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(""Temp_Substance!$A2:$A" & final_substance & """)"
在Excel 2007執行沒有問題
但在Excel 2003操作會發生下方錯誤
[attach]20772[/attach]
GOOLGE爬文了好久也找到一些方式
但都沒有解 困擾好久.....
請各位大大協助
感謝!!!
作者:
lpk187
時間:
2015-4-22 19:36
回復
1#
li_hsien
資料驗證清單在2003好像不能跨工作表,不過可以用定義名稱來跨工作表使用,如下的程式碼試看看行不行
final_substance = Worksheets("Temp_Substance").Range("A65536").End(xlUp).Row
Names("範圍").RefersToLocal = "=Temp_Substance!$A$2:$A$" & final_substance
'建立Substance下拉選單
With Worksheets("規格比對表").Range("E4:E" & Range("C65536").End(xlUp).Row).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=範圍"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "請以下拉選單方式選取"
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
複製代碼
作者:
li_hsien
時間:
2015-4-24 09:28
回復
2#
lpk187
感謝lpk187大協助
後來發現是我必須切換到所要設定下拉選單的工作表
(e.g. Worksheets("規格比對表").activate)
先activate過去再執行下拉清單的語法就可以了...
Excel 2007都沒有這個問題
真是個難得經驗
另外您提及跨Sheet的資料來源
Excel 2003本身好像有限制,但是可以用INDIRECT的方式操作
還是可以執行
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)