[算表] 如何用VBA抓儲存格的值而非公式結果

看板Office作者 (沒有人)時間11年前 (2015/03/05 17:54), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/2 (看更多)
軟體:Excel 版本:2010 因為公司需求 1. 想把業務的出貨列表以當天為準 往後一星期的值抓出來列印 2. 之後會再把各業務的一星期內的表(一個業務一個檔案) 整合到一個工作表內並排序 ========================= 目前是先做第一步的部分 我是用VBA按鈕去寫 按下去後會用篩選的方式先列出一星期內的內容 然後再逐筆 copy 到另一個工作表 之後取消篩選,內容如下 Private Sub testsend_Click() Dim Sht As Worksheet Dim rng As Range Dim a As Integer With Sheets("排程表") '在Orders工作表中 Set rng = .UsedRange '所有資料範圍 rng.AutoFilter Field:=2, Criteria1:=Array("15.02.09", _ "15.02.10", _ "15.02.11", _ "15.02.12", _ "15.02.13", _ "15.02.14", _ "15.02.15"), _ Operator:=xlFilterValues '篩選出日期 Set Sht = Sheets("一週交期") a = Sht.Range("a1048576").End(xlUp).Row '定位最後一列非空白列的值 For i = 2 To Sheets("排程表").Range("b1048576").End(xlUp).Row '依列數跑迴圈 If Range("B" & i) <> "" Then a = a + 1 '每次都重新定位最後一列空白列的值 For j = 1 To Sheets("排程表").Range("a1").End(xlToRight).Column '依欄數跑迴圈 Set rng = Sht.Cells(a, j) rng = Sheets("排程表").Cells(i, j) '若不為寄送格則複製原內容 Next End If Next AutoFilterMode = False End With End Sub 這部分寫來測試的是沒有問題,但是因為目前的 array 內用的是固定值 而我需求的是希望用 today(),today()+1,today()+2 這樣去做 目前我是用取巧的方式,另外開一個 sheet a1 - a7 填上 today(),today()+1...這樣 然後用格式化條件變成 15.02.09 , 15.02.10 , 15.02.11 的格式 但是當用 VBA 抓儲存格的值 sheets"日期參數用".cells(1,1) 來對照時 抓出來的值會是 2015/2/9 這樣而非 15.02.09 可是我們公司日期輸入方式又偏偏是非制式的 yy.mm.dd 而非 yy/mm/dd,這樣一來如果要拿抓出來的值當篩選條件 會是 2015/2/9 這樣,無法使用 所以想請問是否有方法可以抓取儲存格"顯示出來的字" 而非是抓取公式運算的值呢 ? 另外 2. 的部分 在網路上跟板內搜尋過 可是效果跟我想要的有些出入 想一併請教是否有可以參考的解決方法呢 ? -- 上PTT純粹是慌亂生活中忙碌時間裡緊張壓力下微不足道的我們唯一偷偷能做到的 忙裡偷閒下的快樂時光用來放鬆慌亂生活中忙碌時間裡緊張壓力下微不足道的我 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.62.220.207 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1425549263.A.E62.html

03/05 18:20, , 1F
用format()來轉換成yy.mm.dd的格式
03/05 18:20, 1F

03/05 18:20, , 2F
03/05 18:20, 2F

03/05 18:27, , 3F
問題2.一個業務一個檔來看,步驟開檔workbook.open
03/05 18:27, 3F

03/05 18:28, , 4F
將開啟檔案內特定工作表內的資料copy到另一個工作表內
03/05 18:28, 4F

03/05 18:29, , 5F
sheet().usedrange.copy,關檔workbook.close
03/05 18:29, 5F

03/05 18:30, , 6F
排序range.sort
03/05 18:30, 6F
文章代碼(AID): #1K-2VFvY (Office)
文章代碼(AID): #1K-2VFvY (Office)