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

楼主: nifa (没有人)   2015-03-05 17:54:19
软件: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. 的部分
在网络上跟板内搜寻过
可是效果跟我想要的有些出入
想一并请教是否有可以参考的解决方法呢 ?
作者: soyoso (我是耀宗)   2015-03-05 18:20:00
用format()来转换成yy.mm.dd的格式
作者: EGsux (天龙人)   2015-03-05 18:20:00
作者: soyoso (我是耀宗)   2015-03-05 18:27:00
问题2.一个业务一个档来看,步骤开档workbook.open将开启档案内特定工作表内的资料copy到另一个工作表内sheet().usedrange.copy,关档workbook.close排序range.sort

Links booklink

Contact Us: admin [ a t ] ucptt.com