Board logo

標題: [發問] 執行階段錯誤-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錯誤

以下語法是資料驗證使用下拉清單的操作

  1. final_substance = Worksheets("Temp_Substance").Range("A65536").End(xlUp).Row

  2.     '建立Substance下拉選單
  3.     With Worksheets("規格比對表").Range("E4:E" & Range("C65536").End(xlUp).Row).Validation
  4.         .Delete
  5.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  6.         xlBetween, Formula1:="=INDIRECT(""Temp_Substance!$A2:$A" & final_substance & """)"        
  7.         .IgnoreBlank = True
  8.         .InCellDropdown = True
  9.         .InputTitle = ""
  10.         .ErrorTitle = ""
  11.         .InputMessage = ""
  12.         .ErrorMessage = "請以下拉選單方式選取"
  13.         .IMEMode = xlIMEModeNoControl
  14.         .ShowInput = True
  15.         .ShowError = True
  16.     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好像不能跨工作表,不過可以用定義名稱來跨工作表使用,如下的程式碼試看看行不行
  1. final_substance = Worksheets("Temp_Substance").Range("A65536").End(xlUp).Row
  2. Names("範圍").RefersToLocal = "=Temp_Substance!$A$2:$A$" & final_substance
  3.    

  4.     '建立Substance下拉選單
  5.     With Worksheets("規格比對表").Range("E4:E" & Range("C65536").End(xlUp).Row).Validation
  6.         .Delete
  7.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  8.         xlBetween, Formula1:="=範圍"
  9.         .IgnoreBlank = True
  10.         .InCellDropdown = True
  11.         .InputTitle = ""
  12.         .ErrorTitle = ""
  13.         .InputMessage = ""
  14.         .ErrorMessage = "請以下拉選單方式選取"
  15.         .IMEMode = xlIMEModeNoControl
  16.         .ShowInput = True
  17.         .ShowError = True
  18.     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/)