返回列表 上一主題 發帖

[發問] 欄位貼上問題

日期的搜尋方法

想請問日期的搜尋方法
是不是跟一般搜尋不太一樣?

Book1.rar (43.62 KB)

問題:
按下讀出 輸入日期 的日期格式應該是要怎麼樣
ex打入2014/7/1 會將sheet2的7/1的所有資料都更新至Sheet1第三列開始

所以想問日期的搜尋方法是怎麼做

TOP

回復 1# bridetobe
  1. Private Sub CommandButton1_Click()
  2.     Dim a_date  ' As String
  3.     a_date = InputBox("輸入日期(例2014/7/1):")
  4.     With Sheet2
  5.         Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlValues) '搜尋文字
  6.     End With
  7.     If Not A Is Nothing Then
  8.         MsgBox ("有")
  9.     Else
  10.         MsgBox ("沒有資料")
  11.     End If
  12. End Sub
  13. Private Sub CommandButton2_Click()
  14.     Dim a_date As Date
  15.     a_date = InputBox("輸入日期(例2014/7/1):")
  16.     With Sheet2
  17.         Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlFormulas) '搜尋公式
  18.     End With
  19.     If Not A Is Nothing Then
  20.         MsgBox ("有")
  21.     Else
  22.         MsgBox ("沒有資料")
  23.     End If
  24. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 2# GBKEE

謝謝版主回答~~
那我可以在請問一下
Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlValues) '搜尋文字

這個範圍部分的 "A2", .[a2].End(xlDown))用法嗎

以及button1和2的差別

測試.rar (43.63 KB)
我將搜尋到的資料 貼到sheet1的第三列開始
是哪裡的寫法錯誤
讓他無止盡的貼下去
而且sheet2的品名#702 也就是第一項沒有貼到??

不好意思問題很多><

TOP

回復 2# GBKEE


    測試.rar (47.71 KB)

抱歉 夾帶錯檔案 這個才對

TOP

回復 4# bridetobe
試試看
  1. Private Sub CommandButton1_Click()
  2.     Dim srcrange As Range
  3.     Dim a_date  ' As String
  4.     Dim fndrange, fstaddress, i
  5.     a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
  6.     If a_date = "" Then Exit Sub  '取消時
  7.     With Sheet2
  8.     Set srcrange = .Range("A2", .[a2].End(xlDown))
  9.         Set fndrange = srcrange.Find(what:=a_date, AFTER:=srcrange(srcrange.Count), LookIn:=xlValues) '搜尋文字
  10.         'After     選擇性的 Variant。  指定儲存格,尋找將從該儲存格之後開始。此儲存格對應於從使用者介面尋找時的使用中儲存格位置。
  11.         '注意 After 必須是尋找範圍中的單個儲存格。請記住尋找是從該儲存格之後   開始的;必須等到該方法循環回到此儲存格時,才會搜尋其內容。
  12.         '如果未指定此引數,搜尋將從範圍的左上角儲存格之後開始
  13.     End With
  14.     If Not fndrange Is Nothing Then
  15.         'fstaddress = fndress = fndrange.Address  '這裡錯誤 讓他無止盡的貼下去
  16.         fstaddress = fndrange.Address
  17.         i = 3
  18.         Do
  19.         Cells(i, 1).Value = fndrange.Offset(, 1)
  20.         Cells(i, 2).Value = fndrange.Offset(, 2)
  21.         Cells(i, 3).Value = fndrange.Offset(, 3)
  22.         Cells(i, 4).Value = fndrange.Offset(, 4)
  23.         Cells(i, 5).Value = fndrange.Offset(, 5)
  24.         Cells(i, 6).Value = fndrange.Offset(, 6)
  25.         Cells(i, 7).Value = fndrange.Offset(, 7)
  26.         Set fndrange = srcrange.FindNext(AFTER:=fndrange)
  27.         i = i + 1
  28.         Loop Until fndrange.Address = fstaddress
  29.     Else
  30.         MsgBox ("沒有資料")
  31.     End If
  32. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# GBKEE

謝謝
解決了無止盡貼下去了
可是發現不只貼上7/1號的
還有夾雜一些其他的日期的
7/7 等等的 貼到了7xx多列

TOP

本帖最後由 GBKEE 於 2014-7-30 15:15 編輯

回復 6# bridetobe
Find 會根據上ㄧ次Find的參數來搜尋
  1. Private Sub CommandButton1_Click()
  2.     Dim srcrange As Range
  3.     Dim a_date  As String
  4.     Dim fndrange As Range, fstaddress As String, i As Integer
  5.     a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
  6.     If a_date = "" Then Exit Sub  '取消時
  7.     With Sheet2
  8.     Set srcrange = .Range("A2", .[a2].End(xlDown))
  9.         srcrange.Interior.ColorIndex = xlNone
  10.         Set fndrange = srcrange.Find(what:=a_date, AFTER:=srcrange(srcrange.Count), LookIn:=xlValues, lookat:=xlWhole) '搜尋文字
  11.         'After     選擇性的 Variant。  指定儲存格,尋找將從該儲存格之後開始。此儲存格對應於從使用者介面尋找時的使用中儲存格位置。
  12.         '注意 After 必須是尋找範圍中的單個儲存格。請記住尋找是從該儲存格之後   開始的;必須等到該方法循環回到此儲存格時,才會搜尋其內容。
  13.         '如果未指定此引數,搜尋將從範圍的左上角儲存格之後開始
  14.                
  15.         'LookAt  選擇性的 Variant。可為下列 XlLookAt 常數之一:xlWhole 或 xlPart。
  16.         
  17.     End With
  18.     If Not fndrange Is Nothing Then
  19.         'fstaddress = fndress = fndrange.Address  '這裡錯誤 讓他無止盡的貼下去
  20.         fstaddress = fndrange.Address
  21.         i = 3
  22.         Do
  23.             fndrange.Interior.Color = vbRed
  24.             Cells(i, 1).Resize(1, 7) = fndrange.Offset(, 1).Resize(1, 7).Value
  25.             Set fndrange = srcrange.FindNext(AFTER:=fndrange)
  26.             i = i + 1
  27.         Loop Until fndrange.Address = fstaddress
  28.     Else
  29.         MsgBox ("沒有資料")
  30.     End If
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# GBKEE


解決了
非常謝謝版大~~~

TOP

[發問] 欄位貼上問題

塗料存貨管理(20140806).rar (63.7 KB)

想請問一下
按下讀出可以將8/6的資料全部讀取出來
然後利用"操作"工作表 更改8/7的存貨

按下寫入可以
跳出一個inputbox詢問 要增加為幾月幾號的資料
再將更改完的資料(除了A1:G2)的資料

(圖中紅框框部分)
往"存貨資料"工作表B欄最下面往下貼

(圖中紅線部分)
然後將Inputbox內的日期貼到與資料同行

(將圖中A欄空白資料用inputbox內的內容填滿)
請問這些步驟這要怎麼完成?

原本有想過 使用巨集錄製
將整個操作工作表的內容
複製到其他工作表 然後把標題列(A1:G2)刪除
再複製到存貨資料工作表內
但怎麼寫都寫不出來
還請各位大大幫幫忙

本帖最後由 GBKEE 於 2014-8-7 10:47 編輯

回復 9# bridetobe
  1. Private Sub CommandButton1_Click()
  2.     Dim srcrange As Range
  3.     Dim a_date  As String
  4.     Dim fndrange As Range, fstaddress As String, i As Integer
  5.     a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
  6.     Application.ScreenUpdating = False
  7.    '******************
  8.     Range("A3", Range("A3").End(xlDown)).Resize(, 7).ClearContents
  9.     '*****************
  10.     If a_date = "" Then Exit Sub
複製代碼
  1. Private Sub CommandButton2_Click()
  2.    Dim Rng As Range
  3.    With Sheets("操作")
  4.        Set Rng = .Range("A3", .Range("A3").End(xlDown)).Resize(, 7)
  5.        With Sheets("存貨資料").Range("B1").End(xlDown).Offset(1)
  6.             .Resize(Rng.Rows.Count, Rng.Columns.Count) = Rng.Value
  7.             .Offset(, -1).Resize(Rng.Rows.Count) = Sheets("操作").[b1]
  8.         End With
  9.     End With
  10. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 看別人不順眼,是自己修養不夠。
返回列表 上一主題