標題:
[發問]
欄位貼上問題
[打印本頁]
作者:
bridetobe
時間:
2014-7-25 14:32
標題:
日期的搜尋方法
想請問日期的搜尋方法
是不是跟一般搜尋不太一樣?
[attach]18760[/attach]
問題:
按下讀出 輸入日期 的日期格式應該是要怎麼樣
ex打入2014/7/1 會將sheet2的7/1的所有資料都更新至Sheet1第三列開始
所以想問日期的搜尋方法是怎麼做
作者:
GBKEE
時間:
2014-7-26 15:45
回復
1#
bridetobe
Private Sub CommandButton1_Click()
Dim a_date ' As String
a_date = InputBox("輸入日期(例2014/7/1):")
With Sheet2
Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlValues) '搜尋文字
End With
If Not A Is Nothing Then
MsgBox ("有")
Else
MsgBox ("沒有資料")
End If
End Sub
Private Sub CommandButton2_Click()
Dim a_date As Date
a_date = InputBox("輸入日期(例2014/7/1):")
With Sheet2
Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlFormulas) '搜尋公式
End With
If Not A Is Nothing Then
MsgBox ("有")
Else
MsgBox ("沒有資料")
End If
End Sub
複製代碼
作者:
bridetobe
時間:
2014-7-28 10:02
回復
2#
GBKEE
謝謝版主回答~~
那我可以在請問一下
Set A = .Range("A2", .[a2].End(xlDown)).Find(what:=a_date, LookIn:=xlValues) '搜尋文字
這個範圍部分的
"A2", .[a2].End(xlDown))
用法嗎
以及button1和2的差別
[attach]18773[/attach]
我將搜尋到的資料 貼到sheet1的第三列開始
是哪裡的寫法錯誤
讓他無止盡的貼下去
而且sheet2的品名#702 也就是第一項沒有貼到??
不好意思問題很多><
作者:
bridetobe
時間:
2014-7-28 10:06
回復
2#
GBKEE
[attach]18774[/attach]
抱歉 夾帶錯檔案 這個才對
作者:
GBKEE
時間:
2014-7-28 17:21
回復
4#
bridetobe
試試看
Private Sub CommandButton1_Click()
Dim srcrange As Range
Dim a_date ' As String
Dim fndrange, fstaddress, i
a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
If a_date = "" Then Exit Sub '取消時
With Sheet2
Set srcrange = .Range("A2", .[a2].End(xlDown))
Set fndrange = srcrange.Find(what:=a_date, AFTER:=srcrange(srcrange.Count), LookIn:=xlValues) '搜尋文字
'After 選擇性的 Variant。 指定儲存格,尋找將從該儲存格之後開始。此儲存格對應於從使用者介面尋找時的使用中儲存格位置。
'注意 After 必須是尋找範圍中的單個儲存格。請記住尋找是從該儲存格之後 開始的;必須等到該方法循環回到此儲存格時,才會搜尋其內容。
'如果未指定此引數,搜尋將從範圍的左上角儲存格之後開始
End With
If Not fndrange Is Nothing Then
'fstaddress = fndress = fndrange.Address '這裡錯誤 讓他無止盡的貼下去
fstaddress = fndrange.Address
i = 3
Do
Cells(i, 1).Value = fndrange.Offset(, 1)
Cells(i, 2).Value = fndrange.Offset(, 2)
Cells(i, 3).Value = fndrange.Offset(, 3)
Cells(i, 4).Value = fndrange.Offset(, 4)
Cells(i, 5).Value = fndrange.Offset(, 5)
Cells(i, 6).Value = fndrange.Offset(, 6)
Cells(i, 7).Value = fndrange.Offset(, 7)
Set fndrange = srcrange.FindNext(AFTER:=fndrange)
i = i + 1
Loop Until fndrange.Address = fstaddress
Else
MsgBox ("沒有資料")
End If
End Sub
複製代碼
作者:
bridetobe
時間:
2014-7-29 09:04
回復
5#
GBKEE
謝謝
解決了無止盡貼下去了
可是發現不只貼上7/1號的
還有夾雜一些其他的日期的
7/7 等等的 貼到了7xx多列
作者:
GBKEE
時間:
2014-7-30 15:14
本帖最後由 GBKEE 於 2014-7-30 15:15 編輯
回復
6#
bridetobe
Find 會根據上ㄧ次Find的參數來搜尋
Private Sub CommandButton1_Click()
Dim srcrange As Range
Dim a_date As String
Dim fndrange As Range, fstaddress As String, i As Integer
a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
If a_date = "" Then Exit Sub '取消時
With Sheet2
Set srcrange = .Range("A2", .[a2].End(xlDown))
srcrange.Interior.ColorIndex = xlNone
Set fndrange = srcrange.Find(what:=a_date, AFTER:=srcrange(srcrange.Count), LookIn:=xlValues, lookat:=xlWhole) '搜尋文字
'After 選擇性的 Variant。 指定儲存格,尋找將從該儲存格之後開始。此儲存格對應於從使用者介面尋找時的使用中儲存格位置。
'注意 After 必須是尋找範圍中的單個儲存格。請記住尋找是從該儲存格之後 開始的;必須等到該方法循環回到此儲存格時,才會搜尋其內容。
'如果未指定此引數,搜尋將從範圍的左上角儲存格之後開始
'LookAt 選擇性的 Variant。可為下列 XlLookAt 常數之一:xlWhole 或 xlPart。
End With
If Not fndrange Is Nothing Then
'fstaddress = fndress = fndrange.Address '這裡錯誤 讓他無止盡的貼下去
fstaddress = fndrange.Address
i = 3
Do
fndrange.Interior.Color = vbRed
Cells(i, 1).Resize(1, 7) = fndrange.Offset(, 1).Resize(1, 7).Value
Set fndrange = srcrange.FindNext(AFTER:=fndrange)
i = i + 1
Loop Until fndrange.Address = fstaddress
Else
MsgBox ("沒有資料")
End If
End Sub
複製代碼
作者:
bridetobe
時間:
2014-8-4 16:06
回復
7#
GBKEE
解決了
非常謝謝版大~~~
作者:
bridetobe
時間:
2014-8-7 09:19
標題:
欄位貼上問題
[attach]18847[/attach]
想請問一下
按下讀出可以將8/6的資料全部讀取出來
然後利用"操作"工作表 更改8/7的存貨
按下寫入可以
跳出一個inputbox詢問 要增加為幾月幾號的資料
再將更改完的資料(除了A1:G2)的資料
[attach]18848[/attach]
(圖中紅框框部分)
往"存貨資料"工作表B欄最下面往下貼
[attach]18849[/attach]
(圖中紅線部分)
然後將Inputbox內的日期貼到與資料同行
[attach]18850[/attach]
(將圖中A欄空白資料用inputbox內的內容填滿)
請問這些步驟這要怎麼完成?
原本有想過 使用巨集錄製
將整個操作工作表的內容
複製到其他工作表 然後把標題列(A1:G2)刪除
再複製到存貨資料工作表內
但怎麼寫都寫不出來
還請各位大大幫幫忙
作者:
GBKEE
時間:
2014-8-7 10:43
本帖最後由 GBKEE 於 2014-8-7 10:47 編輯
回復
9#
bridetobe
Private Sub CommandButton1_Click()
Dim srcrange As Range
Dim a_date As String
Dim fndrange As Range, fstaddress As String, i As Integer
a_date = InputBox("輸入日期(例2014/7/1):", , "2014/7/1")
Application.ScreenUpdating = False
'******************
Range("A3", Range("A3").End(xlDown)).Resize(, 7).ClearContents
'*****************
If a_date = "" Then Exit Sub
複製代碼
Private Sub CommandButton2_Click()
Dim Rng As Range
With Sheets("操作")
Set Rng = .Range("A3", .Range("A3").End(xlDown)).Resize(, 7)
With Sheets("存貨資料").Range("B1").End(xlDown).Offset(1)
.Resize(Rng.Rows.Count, Rng.Columns.Count) = Rng.Value
.Offset(, -1).Resize(Rng.Rows.Count) = Sheets("操作").[b1]
End With
End With
End Sub
複製代碼
作者:
Hsieh
時間:
2014-8-7 10:58
回復
9#
bridetobe
Private Sub CommandButton2_Click()
Rng = Range([A3:G3], [A3:G3].End(xlDown)).Value '資料讀入陣列
With Sheets("存貨資料")
d = InputBox("輸入日期(例2014/7/1):", , Format(Application.Max(.[A:A]) + 1, "yyyy/m/d")) '預設為最大日期加1
If d = "" Then Exit Sub '取消輸入
Set A = .Cells(.Rows.Count, 1).End(xlUp).Offset(1) '找到資料尾的下一列A欄位置
A.Offset(, 1).Resize(UBound(Rng), 7) = Rng '將資料寫入工作表
A.Resize(UBound(Rng), 1) = d 'A欄寫入日期
End With
End Sub
複製代碼
作者:
bridetobe
時間:
2014-8-7 11:28
回復
10#
GBKEE
真的非常謝謝!
寫入欄位可以使用了
結果讀出變成無法使用??
作者:
bridetobe
時間:
2014-8-7 11:31
回復
11#
Hsieh
也謝謝版大~~
你們兩個的方法都可以
我一直膩在最基礎的寫法
一直想不到該怎麼用
真的非常謝謝兩位
作者:
GBKEE
時間:
2014-8-7 15:49
結果讀出變成無法使用??
bridetobe 發表於 2014/8/7 11:28
Private Sub CommandButton2_Click()
Range("A59").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("Sheet4").Select
With Sheet4
ActiveSheet.Paste
'Range("A1:G2").Select '這裡出錯
'這CommandButton2是"操作"工作表[物件模組]的程序
'Range("A1:G2").Select是"操作"工作表的Range.Select,不是ActiveSheet的Range.Select
'如CommandButton2_Click()程式碼複製在一般模組
'這Range是ActiveSheet的Range
.Range("A1:G2").Select '前面的. 表為With Sheet4的物件,屬性..
Application.CutCopyMode = False
Selection.ClearContents
Range("A4").Select
Selection.CurrentRegion.Select
Selection.Copy
End With
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)