ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 645|回复: 5

[求助] 提取客户数据已实现,如何实现屏蔽指定客户

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-9-22 21:04 | 显示全部楼层 |阅读模式
在打印页面,点击“筛选日期”就会将“数据页面”对应日期的所以客户数据提取过来。
但是我想实现指定客户的数据不提取过来。

现在点了筛选日期,客户A、客户B、客户C都会提取过来。
我想在VBA中修改代码,只调用客户A和客户C,屏蔽掉客户B不调用过来,后续由于数据的增加,可能还需要屏蔽客户D、客户E等。

附件奉上,请大佬帮忙看看如何解决,谢谢!

以下是现在的代码

Sub shaixuanriqi()
   Sheet4.Activate
Sheet4.Range("A9:I400").ClearContents '清除单元格内容
Sheet4.Range("m1").ClearContents '清除单元格内容
    Dim d As Object, i, arr, brr()
        On Error GoTo CCC
        With Sheets("数据页面")
        arr = .Range("e2:m" & .Cells(.Rows.Count, "f").End(xlUp).Row)
        cont = Application.CountIf(.Range("f2:i" & .Cells(.Rows.Count, "f").End(xlUp).Row), [l2])
        ReDim brr(1 To cont, 1 To 9)
        End With
        k = 1
        For i = 1 To UBound(arr)
            If arr(i, 2) = [l2] Then
                For j = 1 To 9
                    brr(k, j) = arr(i, j)
                Next
                k = k + 1
            End If
        Next
         [a6].Resize(cont, 9) = brr
       ThisWorkbook.Save
CCC:
End Sub



出货单模板.zip (31.8 KB, 下载次数: 6)

TA的精华主题

TA的得分主题

发表于 2021-9-23 06:15 来自手机 | 显示全部楼层
select rowid,* from 筛选数据页面明细表 where not 客户单位 in ('客户B')
Screenshot_2021-09-23-06-15-33-635_com.chrome.dev.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-23 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zpy2 发表于 2021-9-23 06:15
select rowid,* from 筛选数据页面明细表 where not 客户单位 in ('客户B')

谢谢大佬的办法。
不过能不能就在VBA代码的基础上增加修改,在打印页面点击“筛选日期”时就实现屏蔽指定客户呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-23 11:32 | 显示全部楼层
zpy2 发表于 2021-9-23 06:15
select rowid,* from 筛选数据页面明细表 where not 客户单位 in ('客户B')

我网上搜到一些代码,改编出下面的打印代码,在打印页面使用时,会以A列来逐个打印筛选的内容,就是客户A客户B客户C。
能不能这段代码中增加代码屏蔽不打印“客户B”?

Sub C_打印()
   Sheet4.Activate
   Range("A7:A400").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
   Dim d, arr, i&, r&, y&
   Set d = CreateObject("Scripting.Dictionary")
   r = Cells(Rows.Count, 1).End(3).Row  
   arr = Range("A6:A" & r - 1)  
   y = UBound(arr)
   For i = 1 To y
      d(arr(i, 1)) = ""
   Next
   Range("5:5").AutoFilter
   For i = 1 To d.Count
   Application.Wait Now + TimeValue("00:00:02") '延迟2秒
        Selection.AutoFilter Field:=1, Criteria1:=Application.Index(d.keys, 0, i)
        Application.Wait Now() + CDate("00:00:02")   '延迟2秒
   'ActiveWindow.SelectedSheets.PrintPreview   '先打印预览(测试时启用/停用下一句)
   ActiveWindow.SelectedSheets.PrintOut   '后打印当前表(测试通过正式打印时启用/停用上一句)
   Application.Wait Now() + CDate("00:00:02")   '延迟2秒
   Next
   Selection.AutoFilter
   Application.Wait Now + TimeValue("00:00:02") '延迟2秒
   Application.Quit '退出excel
   Application.DisplayAlerts = False
End Sub

TA的精华主题

TA的得分主题

发表于 2021-9-23 15:15 来自手机 | 显示全部楼层
sh11105 发表于 2021-9-23 11:32
我网上搜到一些代码,改编出下面的打印代码,在打印页面使用时,会以A列来逐个打印筛选的内容,就是客户A ...

https://blog.csdn.net/gordennizaicunzai/article/details/73695710

Selection.AutoFilter Field:=1, Criteria1:=Application.Index(d.keys, 0, i)

这句修改一下,2个条件筛选,应该差不多了。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-23 20:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zpy2 发表于 2021-9-23 15:15
https://blog.csdn.net/gordennizaicunzai/article/details/73695710

Selection.AutoFilter Field:=1, ...

收到,谢谢大佬,我研究下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-28 21:23 , Processed in 0.054110 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表