返回列表 上一主題 發帖

[發問] 依據InputBox填入的日期顯示資料

回復 7# n7822123
謝謝您的耐心說明^^

TOP

回復 6# papaya


Array(1, 2, 3)是指什麼範圍的工作表被刪除了?

新增活頁簿會預設有3個工作表,所以把前3個工作表刪除

你把那一行註解掉,再執行就知道是什麼了  

如果不一次寫,要分三行寫,會變成如下(連續刪除第一頁工作表,3次)


sheets(1).delete
sheets(1).delete
sheets(1).delete
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 papaya 於 2020-7-27 05:30 編輯

回復 4# n7822123
不好意思,請問:
列38    .Sheets(Array(1, 2, 3)).Delete
Array(1, 2, 3)是指什麼範圍的工作表被刪除了?
謝謝您^^

TOP

本帖最後由 papaya 於 2020-7-27 02:45 編輯

回復 4# n7822123
不好意思,夜深了。還勞駕您費神解題~不勝感激
測試成功
明天再仔細拜讀貴程式語法~希望自己有能力消化~再次致謝
=====================================
另一題~將全部的需求一次提出~原本是希望能讓解題的語法有其連貫性和一 致性,
沒想到反而顯得需求複雜而令人卻步~哈~哈~

TOP

本帖最後由 n7822123 於 2020-7-27 00:58 編輯

回復 3# papaya


先幫你把A欄的格式改成日期格式,我自認註解寫不少....且防呆寫不少

所以程式寫的比較長一點,希望看的懂吧~ 程式如下


Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim Arr, 此表 As Worksheet, 日期 As Date, tim!, rg As Range, Rn&, xlsNm$, sh
Arr = Array("七政", "八卦", "五行", "六沖", "生肖", "合數", "均值", "尾數")
Set 此表 = ActiveSheet
'1_先設立1個可輸入日期(yyyymmdd)的InputBox
日期 = InputBox("請輸入日期,格式Ex:2020/07/07", "輸入日期")
If IsEmpty(日期) Then Exit Sub
'檔案名稱="大樂透_遺漏空總統計表_輸入InputBox的日期”
xlsNm = "大樂透_遺漏空總統計表_" & Format(日期, "mmdd")
'檢查是否已有檔案(避免重覆執行)
檢查$ = Dir(ThisWorkbook.Path & "\" & xlsNm & ".xls*")
If 檢查 <> "" Then
  re% = MsgBox("此檔案已存在,請確認是否覆蓋?", vbYesNo)
  If re = vbNo Then Exit Sub Else Kill ThisWorkbook.Path & "\" & 檢查
End If
tim = Timer  '開始計時
'比對日期
For Each rg In Range([A1], [A1].End(4))
  If rg = 日期 Then Rn = rg.Row: Exit For
Next
'如果該B︰H="”時,則Arr的A1也="”
If Rn = 0 Then MsgBox "找不到日期": Exit Sub
For Each sh In Arr
  With Sheets(sh): 此表.Activate
    '2_該日期填入"七政","八卦","五行","六沖","合數","生肖","均值","尾數"的各工作表
    .[A1] = Format(日期, "yyyy/mm/dd")
    '並將DATA的A欄=X日期的下1列之B︰H數值填入
    .[A3].Resize(7) = Application.Transpose(Cells(Rn + 1, 2).Resize(, 7))
  End With
Next
'3_將完成第2項的"Arr"輸出為1個獨立檔案
With Workbooks.Add
  For i = 0 To UBound(Arr)
    ThisWorkbook.Sheets(Arr(i)).Copy After:=.Sheets(.Sheets.Count)
  Next
  .Sheets(Array(1, 2, 3)).Delete
  .SaveAs ThisWorkbook.Path & "\" & xlsNm    '沒給副檔名,舊板新版Excel都適用
  .Close True
End With
[Q2] = Round(Timer - tim, 2)
End Sub


檔案如下

49大樂透(主檔).rar (22.26 KB)

你另一帖需求感覺更多,光看起來就感覺有點麻煩.....

看有沒有人願意幫你,今天先這樣
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 2# n7822123
不好意思,因為剛接觸VBA,還不很清楚編寫的規矩,尚請見諒
因為DATA的資料是下載自APP軟體,所以請將DATA日期格式改為如2020/1/1,2020/7/17,2020/10/7即可,
InputBox輸入的日期格式,就配合更改後的DATA日期格式。
謝謝您

TOP

本帖最後由 n7822123 於 2020-7-26 22:58 編輯

回復 1# papaya


DATA的A欄 是"字串格式" (2020/7/7  (二)),InputBox輸入的日期也是"字串格式" (2020707)

兩個格式都是"字串" 又長的不太一樣,要怎麼比?

用拆解字串方式?  會很麻煩阿!

建議日期就回歸到日期格式,可以用自訂格式 "yyyy/mm/dd (aaa)"

日期格式可以做運算,字串格式不能
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題