Board logo

標題: [發問] 查詢提示問題(以解決,感謝GBKEE的幫忙) [打印本頁]

作者: olisun    時間: 2010-8-10 00:32     標題: 查詢提示問題(以解決,感謝GBKEE的幫忙)

本帖最後由 olisun 於 2010-8-10 12:14 編輯

我希望當查詢週次尚未輸入時,能夠在查詢的時候會出現"無此週次",並離開此程序
如果要查詢的週次存在,則繼續程序
不知哪錯了,就是有問題
Private Sub CommandButton1_Click() '查詢
    Dim a As Integer
       Dim b As Range
         Dim t As Range
           Dim r As Range
   
    Sheets(5).Range("f4:g37") = ""
      Sheets(5).Range("j4:k37") = ""
       Sheets(5).Range("n437") = ""
         Sheets(5).Range("a5") = ""
           Sheets(5).Range("a29") = ""
             Sheets(5).Range("a35") = ""

a:                      czxm = InputBox("輸入查詢週次!")
   
    With Sheets("初看未購原因")
        Set r = .Range("A4:A" & .Range("A65536").End(xlUp).Row)

  On Error Resume Next
   d = .Cells(.Range("A4:A").Find(czxm).Row, 1)
  If d = czxm Then
   MsgBox "無此週次", 0
  Exit Sub
End If
End With
With Sheets(5)
     Set c = Sheets(2).Range("A:A").Find(czxm, lookat:=xlWhole)
   
       If Not c Is Nothing And czxm > "1" Then
         Sheets(5).Range("a5").Value = czxm
            Sheets(5).Range("a29").Value = Sheets(2).Cells(c.Row, 2).Value '日期
                     .Range("a35").Value = .Range("a29").Value + 6 '日期
         Arr = Sheets(2).[a4].Resize(c.Row - 4, 36)    '增加
         Arr1 = Sheets(3).[a4].Resize(c.Row - 4, 36)    '增加
         Arr2 = Sheets(4).[a4].Resize(c.Row - 4, 36)    '增加
作者: luhpro    時間: 2010-8-10 00:52

a:                      czxm = InputBox("輸入查詢週次!")

這一行前面的 a: 可能是問題所在,  (建議你養成排列好程式中文字的習慣,會比較方便找問題點)
當問題發生時可以在訊息視窗中按 "偵錯" 按鍵找問題點,
然而之後出現的畫面中,
不見得反黃區就是問題點.

相反的若出現小小的反藍字元才是問題發生的原因,
雖然那個反藍字元可能很小,
小到幾乎忘了它的存在...
(我常常要看老半天才發現有它的存在.XD)
作者: olisun    時間: 2010-8-10 01:04

我這樣設定的結果是
輸入不存在的週次並沒有出現MsgBox "無此週次", 0的作用,但是會exit sub
就是說除了沒有出現警告之外,一切都符合要求,所以不知是哪錯呢
作者: kimbal    時間: 2010-8-10 01:45

沒有實際需要,不要用On Error Resume Next

上面代碼也不完整,我只看到end with前的

試試把
On Error Resume Next
   d = .Cells(.Range("A4:A").Find(czxm).Row, 1)
  If d = czxm Then
   MsgBox "無此週次", 0
  Exit Sub
End If

換成
  1. d=r.Find(czxm)
  2. if d is nothing Then
  3.    MsgBox "無此週次", 0
  4.    Exit Sub
  5. end If
複製代碼
是查查在a欄找不找到czxm的意思.
作者: olisun    時間: 2010-8-10 02:20

經過測試
1.如果輸入存在的週次,則執行到 MsgBox "無此週次", 0   出現執行階段錯誤"424"  此處需要物件。
2.如果輸入不存在的週次,則執行到 d=r.Find(czxm)     出現執行階段錯誤"91"沒有設定物件變數或WITH區塊變數。
這有問題耶!
作者: GBKEE    時間: 2010-8-10 08:05

回復 5# olisun
On Error Resume Next
d = .Cells(.Range("A4:A").Find(czxm).Row, 1)  這句語法錯誤
因為你使用On Error Resume Next 所以 就忽列這一錯誤繼續執行下去
作者: olisun    時間: 2010-8-10 10:10

可是沒有那一句就出現錯誤400
作者: GBKEE    時間: 2010-8-10 10:32

回復 7# olisun

With Sheets("初看未購原因")  紅字的語法錯誤
    Set r = .Range("A4:A" .Range("A65536").End(xlUp).Row)
   On Error Resume Next
   d = .Cells(.Range("A4:A").Find(czxm).Row, 1)   =>應簡化為  d =r.Find(czxm)
  
這是你要的嗎?
With Sheets("初看未購原因")
    Set r = .Range("A4:A" & .Range("A65536").End(xlUp).Row)  ->修正後
   On Error Resume Next
   d =r.Find(czxm)
作者: olisun    時間: 2010-8-10 10:53

我的式子是有&的,只是複製到這不見了
我希望輸入不存在的週次會出現"無此週次"都沒有執行
MsgBox "無此週次", 0
作者: GBKEE    時間: 2010-8-10 11:18

回復 9# olisun
With Sheets("初看未購原因")
    Set r = .Range("A4:A" & .Range("A65536").End(xlUp).Row) '
    '不要用它On Error Resume Next
    If r.Find(czxm) Is Nothing Then
        MsgBox "無此週次"
        Exit Sub
    End If
End With
作者: olisun    時間: 2010-8-10 11:30

使用f8逐步執行是ok的
可是真正執行的時候,輸入已存在的週次都會出現"物件不支援此屬性或方法"
如果輸入不存在的週次則正確的顯示"無此週次"
作者: GBKEE    時間: 2010-8-10 11:32

回復 11# olisun
請附上檔案看看




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