Board logo

標題: N=對話框點選的列數 [打印本頁]

作者: myleoyes    時間: 2013-10-13 21:01     標題: N=對話框點選的列數

各位前輩你們好!!   
         問題如附檔說明
         請知道的前輩,不吝賜教謝謝再三!!
作者: luhpro    時間: 2013-10-13 22:04

本帖最後由 luhpro 於 2013-10-13 22:06 編輯

回復 1# myleoyes
依據 InputBox 的說明,
這裡 Z 就是所選 Range 的參照, 故而 Z.Row 就是你要的列值囉.
  1. Sub AA()
  2.     Dim Z As Range
  3.        [A1:C1] = ""
  4.     Set Z = Application.InputBox("請選取資料", "        來源數據", Type:=8)
  5.         If Z <= 0 Then Exit Sub
  6.         N = Z.Row 'N = ActiveCell.Row
  7.         [$D$1] = "=" & Z & "-" & N
  8.         [D1].Select
  9. End Sub
複製代碼

作者: myleoyes    時間: 2013-10-14 21:33

回復 2# luhpro
前輩!謝謝!!N= Z.Row小弟有試過
         問題是If Z <= 0 The Exit Sub
         改為If Z <= 0 Then GoTo ag
         當對話框選擇取消時
        程式會錯誤424不知為何?
         請前輩不吝再賜教謝謝再三!!
作者: luhpro    時間: 2013-10-14 22:51

回復 3# myleoyes
那是因為按取消時 InputBox 的傳回值為 "False",
而非儲存格的參照,
自然就無法指定給 Z(Type 為 Range) 了. (發生錯誤代碼 424 : 此處需要物件)

這可以透過錯誤處理來解決:
  1. Sub AA()
  2.   Dim Z As Range
  3.    
  4. On Error GoTo ErrorAA
  5.   [A1:C1] = ""
  6.   Set Z = Application.InputBox("請選取資料", "        來源數據", Type:=8)
  7.   If Z <= 0 Then Exit Sub
  8.   N = 3 'N = ActiveCell.Row
  9.   [$D$1] = "=" & Z & "-" & N
  10.   [D1].Select
  11. On Error Resume Next
  12. Exit Sub
  13.         
  14. ErrorAA:
  15.   If Err.Number = 424 Then
  16.     Exit Sub
  17.   Else
  18.     MsgBox ("發生錯誤, 錯誤代碼 : " & Err.Number & "  錯誤原因 :" & Err.Description)
  19.     Resume Next
  20.   End If
  21. End Sub
複製代碼

作者: myleoyes    時間: 2013-10-15 21:17

回復 4# luhpro
前輩!
        謝謝!!小弟修改如下
  Sub AA()
  Dim Z As Range
  On Error Resume Next
  [A1:C1] = ""
ag:
  Set Z = Application.InputBox("請選取資料", "        來源數據", Type:=8)
  If Z <= 0 Then GoTo ag
   N = Z.Row
  [$D$1] = "=" & Z & "-" & N
  [D1].Select
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)