Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4511|回复: 10

[已解决]向老师们求助

[复制链接]
发表于 2022-4-19 15:30 | 显示全部楼层 |阅读模式
我制作了一个开票及保存的VBA,怎么保存程序老显示有错误,不知道错在什么地方,请老师们帮忙指正
最佳答案
2022-4-20 09:01
haokaoshan 发表于 2022-4-20 08:18
老师,问题语句已修改为: .Cells(n + 1, 1) = Date,结果显示如图,这个问题好像还是没能解决呀

我稍帮您优化了一下代码,不知是否符合您的要求。

  1. Sub 玥玥开票保存()
  2.     Dim SSD As Worksheet, SSLS As Worksheet, n&, i%, j%

  3.     Set SSD = Worksheets("销售单")
  4.     Set SSLS = Worksheets("销售流水")

  5.     If Date > #5/25/2022# Then Exit Sub

  6.     If Not SSLS.Columns(2).Find(SSD.[H2].Value, , , xlWhole) Is Nothing Then
  7.         MsgBox "已经保存、打印过了!", vbInformation
  8.         Exit Sub
  9.     End If
  10.     If SSD.[C4] = "" Or SSD.[b6] = "" Then
  11.         MsgBox "您要保存的出库单没有内容,请填写!", vbInformation
  12.         Exit Sub
  13.     End If
  14.     If SSD.[d6] = "" And SSD.[e6] = "" Then
  15.         MsgBox "h9没有填写购买数量", vbInformation
  16.         Exit Sub
  17.     End If
  18.     If SSD.[G8] = "" Then
  19.         MsgBox "没填写司机姓名,请填写!", vbInformation
  20.         Exit Sub
  21.     End If

  22.     n = SSLS.Cells(Rows.Count, 2).End(xlUp).Row

  23.     For i = 1 To 2
  24.         If SSD.Cells(5 + i, "B") <> "" Then
  25.             SSLS.Cells(n + i, 1) = Date
  26.             SSLS.Cells(n + i, 2) = SSD.[H2]
  27.             SSLS.Cells(n + i, 3) = SSD.[C4]
  28.             For j = 4 To 8
  29.                 SSLS.Cells(n + i, j) = SSD.Cells(5 + i, j - 2)
  30.             Next j
  31.             SSLS.Cells(n + i, 9) = SSD.[E9]
  32.             SSLS.Cells(n + i, 10) = SSD.[G8]
  33.             SSLS.Cells(n + i, 11) = SSD.[G9]
  34.         End If
  35.     Next i

  36.     MsgBox "保存成功,下面放好打印纸,准备开始打印!"
  37.     '我猜您意思是不想打印某些内容
  38.     SSD.[B5:J7].Borders.LineStyle = xlNone '打印前取消表格边框
  39.     SSD.Range("B2:E2,B4,F4,H4,J4,B5:J5,D8,F8,B10,C10").Select
  40.     Selection.Font.Color = vbWhite '打印前令部分文字变白(不打印)
  41.     SSD.[B2:J10].PrintOut ActivePrinter:="Hewlett-Packard HP LaserJet Professional M1213nf MFP="
  42.     Selection.Font.Color = vbBlack
  43.     SSD.[B5:J7].Borders.LineStyle = xlContinuous
  44.     MsgBox "打印成功!"
  45.     [A1].Select
  46. End Sub
复制代码


玥玥.rar

24.72 KB, 下载次数: 8

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-4-19 16:58 | 显示全部楼层
楼主,您好!
请问代码的哪个地方出错呢?出错提示是什么?
我运行的结果是:“玥玥开票保存”运行一切正常,无任何错误提示。
当然,由于代码的不合理,该保存的内容没有保存,但没提示出错。
回复

使用道具 举报

 楼主| 发表于 2022-4-19 19:36 | 显示全部楼层
vitrel 发表于 2022-4-19 16:58
楼主,您好!
请问代码的哪个地方出错呢?出错提示是什么?
我运行的结果是:“玥玥开票保存”运行一切正 ...

老师,出现的问题是:1、  .cell(n + 1, 1).Value = Date 运行显示类型不匹配,2,相关销售单表数据,不能对应复制到销售流水表中

回复

使用道具 举报

 楼主| 发表于 2022-4-19 19:38 | 显示全部楼层
我刚刚试了一下,问题还是一直存在
回复

使用道具 举报

 楼主| 发表于 2022-4-19 19:38 | 显示全部楼层
我刚刚试了一下,问题还是一直存在
回复

使用道具 举报

发表于 2022-4-20 00:04 | 显示全部楼层
haokaoshan 发表于 2022-4-19 19:36
老师,出现的问题是:1、  .cell(n + 1, 1).Value = Date 运行显示类型不匹配,2,相关销售单表数据,不 ...

.Cells(n + 1, 1).Value = Date
其它 还未看


回复

使用道具 举报

发表于 2022-4-20 08:11 | 显示全部楼层
砂海 发表于 2022-4-20 00:04
.Cells(n + 1, 1).Value = Date
其它 还未看

您好!
您太细心了,我只运行通过,就没再细找代码里的错误。
您提醒后,我用F8逐语句运行,发现代码运行到“If frng Is Nothing Then”时,
由于条件不成立,整段代码跳过了,所以系统根本没检查这里面的语句,因此也没提示错误。
回复

使用道具 举报

 楼主| 发表于 2022-4-20 08:18 | 显示全部楼层
老师,问题语句已修改为: .Cells(n + 1, 1) = Date,结果显示如图,这个问题好像还是没能解决呀
360截图20220420081353760.jpg
360截图20220420081428935.jpg
360截图20220420081456155.jpg
回复

使用道具 举报

发表于 2022-4-20 08:25 | 显示全部楼层
haokaoshan 发表于 2022-4-19 19:36
老师,出现的问题是:1、  .cell(n + 1, 1).Value = Date 运行显示类型不匹配,2,相关销售单表数据,不 ...

楼主,您好!
我修改了一下,您看是否符合您的要求。

玥玥2.rar

24.08 KB, 下载次数: 2

回复

使用道具 举报

发表于 2022-4-20 09:01 | 显示全部楼层    本楼为最佳答案   
haokaoshan 发表于 2022-4-20 08:18
老师,问题语句已修改为: .Cells(n + 1, 1) = Date,结果显示如图,这个问题好像还是没能解决呀

我稍帮您优化了一下代码,不知是否符合您的要求。

  1. Sub 玥玥开票保存()
  2.     Dim SSD As Worksheet, SSLS As Worksheet, n&, i%, j%

  3.     Set SSD = Worksheets("销售单")
  4.     Set SSLS = Worksheets("销售流水")

  5.     If Date > #5/25/2022# Then Exit Sub

  6.     If Not SSLS.Columns(2).Find(SSD.[H2].Value, , , xlWhole) Is Nothing Then
  7.         MsgBox "已经保存、打印过了!", vbInformation
  8.         Exit Sub
  9.     End If
  10.     If SSD.[C4] = "" Or SSD.[b6] = "" Then
  11.         MsgBox "您要保存的出库单没有内容,请填写!", vbInformation
  12.         Exit Sub
  13.     End If
  14.     If SSD.[d6] = "" And SSD.[e6] = "" Then
  15.         MsgBox "h9没有填写购买数量", vbInformation
  16.         Exit Sub
  17.     End If
  18.     If SSD.[G8] = "" Then
  19.         MsgBox "没填写司机姓名,请填写!", vbInformation
  20.         Exit Sub
  21.     End If

  22.     n = SSLS.Cells(Rows.Count, 2).End(xlUp).Row

  23.     For i = 1 To 2
  24.         If SSD.Cells(5 + i, "B") <> "" Then
  25.             SSLS.Cells(n + i, 1) = Date
  26.             SSLS.Cells(n + i, 2) = SSD.[H2]
  27.             SSLS.Cells(n + i, 3) = SSD.[C4]
  28.             For j = 4 To 8
  29.                 SSLS.Cells(n + i, j) = SSD.Cells(5 + i, j - 2)
  30.             Next j
  31.             SSLS.Cells(n + i, 9) = SSD.[E9]
  32.             SSLS.Cells(n + i, 10) = SSD.[G8]
  33.             SSLS.Cells(n + i, 11) = SSD.[G9]
  34.         End If
  35.     Next i

  36.     MsgBox "保存成功,下面放好打印纸,准备开始打印!"
  37.     '我猜您意思是不想打印某些内容
  38.     SSD.[B5:J7].Borders.LineStyle = xlNone '打印前取消表格边框
  39.     SSD.Range("B2:E2,B4,F4,H4,J4,B5:J5,D8,F8,B10,C10").Select
  40.     Selection.Font.Color = vbWhite '打印前令部分文字变白(不打印)
  41.     SSD.[B2:J10].PrintOut ActivePrinter:="Hewlett-Packard HP LaserJet Professional M1213nf MFP="
  42.     Selection.Font.Color = vbBlack
  43.     SSD.[B5:J7].Borders.LineStyle = xlContinuous
  44.     MsgBox "打印成功!"
  45.     [A1].Select
  46. End Sub
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-7 06:38 , Processed in 0.877262 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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