是UsedRange還是specialcells(xlcell...)用錯了?

来源:互联网 发布:微信交友网站源码 编辑:程序博客网 时间:2024/05/29 08:22
  是UsedRange還是specialcells(xlcell...)用錯了?
« 於: 2006-03-28, 00:24:40 »  


花了我5個小時,還是找不出問題,
求教各位高手:

sub ......
 dim SampleRequestFile as Workbook
 Dim ModelName As String
 Dim SerialNumber As String
 Dim destination As Range
 Dim CountNum As Integer
 CountNum = 0

 ModelName = SampleRequestFile.Worksheets("sample request").Range("g8") '以 機種名稱 為搜尋項目
 SerialNumber = SampleRequestFile.Worksheets("sample request").Range("bb8") '以 需求單號 為搜尋項目
 
 '打開資料庫  D:/VBA test/sample list.xls

 Workbooks.Open filename:="D:/VBA test/sample list.xls" ''''''''''''''''''''''''''''''''確認資料庫已存在
 
 '開始搜尋
 
 
 '''''''''''''''''''''''''''''''''''''''''''''''''''''
 If Not (Workbooks("sample list.xls").Worksheets("sample list1").UsedRange.Find(SerialNumber, LookIn:=xlValues) _
 Is Nothing) Then '''檢查是否曾登錄過這需求單
 
 MsgBox "這需求單已登錄過,退出程序。"
 Exit Sub
 End If
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Set destination = Workbooks("sample list.xls").Worksheets("sample list1").UsedRange _
 .Find(ModelName, LookIn:=xlValues) '''''''''找出該機種名稱的位置

  If destination Is Nothing Then ''若找不到機種名稱,再開一行新資料
  Workbooks("sample list.xls").Worksheets("sample list1").Cells.Rows(2).Select
  Cells(1, 1) = Selection.Rows.SpecialCells(xlCellTypeLastCell).Value

在測試 destination Is Nothing時, 就出錯。
最後兩句看起來很笨拙,是因為我試了很多句型,想要要把第二列的最後一個儲存格的值傳回,但傳回來的都是UsedRange的最後一格。就算是把Rows(2)改成Rows(3) 或Columns(4)等等,都是傳回UsedRange的最後一格,這是怎麼回事?

傳回最右邊儲存格值可試試:
Cells(1, 1) = Selection.Rows.End(xlToRight).Value

嗯,這方法可以了,但我還是想知道之前是出了什麼問題?

出了什麼問題嗎?SpecialCells(xlCellTypeLastCell)是已用範圍的最後一個儲存格,它對整個工作表,指定範圍改變不了它的工作。