ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: WYS67

[求助] 给代码增加按J1指定数字代号,更新数据到对应分表的功能。

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-5 21:16 | 显示全部楼层
lsc900707 发表于 2018-10-5 21:06
我测试都没问题,要不你清空数值试试!
还有一个前提,工作簿是不需要你手工打开的!

难道是office365的问题?您测试时wb.close true注释掉了没有?

TA的精华主题

TA的得分主题

发表于 2018-10-5 21:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
WYS67 发表于 2018-10-5 21:16
难道是office365的问题?您测试时wb.close true注释掉了没有?

可不能冤枉,我也是office365,你不要打开分表工作簿,在总表的j1单元格输入0,1,2,3一个一个测试看数据更新了没。

河南快三.rar

851.25 KB, 下载次数: 6

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-5 22:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lsc900707 发表于 2018-10-5 21:48
可不能冤枉,我也是office365,你不要打开分表工作簿,在总表的j1单元格输入0,1,2,3一个一个测试看数据更 ...

版主老师:就是12楼附件,在《00 总表里》最后输入20(应该在《0 三同》),19(应该在《2 组六》),14(应该在《1 组三》)请看下面点击更新的视频: Video_20181005220408.zip (1.64 MB, 下载次数: 1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-5 22:30 | 显示全部楼层
本帖最后由 WYS67 于 2018-10-5 22:31 编辑
lsc900707 发表于 2018-10-5 21:48
可不能冤枉,我也是office365,你不要打开分表工作簿,在总表的j1单元格输入0,1,2,3一个一个测试看数据更 ...

版主老师:您说不要打开分表工作簿,可能我在《00 总表》N9里说的笼统,忘了特别点名总表和分表需要同时在打开状态下更新数据,以方便随时查看,掌握各个分表最新数据的时时变化。
1.当J1指定为0时,只更新处于打开状态的《0 三同》分表;
2.当J1指定为1时,只更新处于打开状态的《1 组三》分表;
3.当J1指定为2时,只更新处于打开状态的《2 组六》分表;
4.当J1指定为3时,则使用下面的原代码,更新所有分表内容
上面的第4项,不能都在打开状态下更新(并且更新完后不要自动关闭)数据吗?



TA的精华主题

TA的得分主题

发表于 2018-10-5 22:46 | 显示全部楼层
WYS67 发表于 2018-10-5 22:09
版主老师:就是12楼附件,在《00 总表里》最后输入20(应该在《0 三同》),19(应该在《2 组六》),14 ...

20,19,14输在哪里?怎么会有这些数字?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-5 23:11 | 显示全部楼层
lsc900707 发表于 2018-10-5 22:46
20,19,14输在哪里?怎么会有这些数字?

马上就有详细说明。属于单次和连续输入并点击更新引发的问题

TA的精华主题

TA的得分主题

发表于 2018-10-5 23:35 | 显示全部楼层
WYS67 发表于 2018-10-5 22:30
版主老师:您说不要打开分表工作簿,可能我在《00 总表》N9里说的笼统,忘了特别点名总表和分表需要同时 ...
  1. Sub 更新1006()
  2.     Application.ScreenUpdating = False
  3.     Set wk = ThisWorkbook
  4.     tms = Timer
  5.     r1 = [g1]: r2 = [h2].Value
  6.     If r2 <= r1 Then arr = Range("e5:j" & r1)
  7.     ReDim brr(1 To UBound(arr), 1 To 6)
  8.      Select Case [j1] * 1
  9.         Case "0"
  10.             Set wb = Application.Workbooks("0 三同.xlsm")
  11.             With wb.Sheets(1)
  12.                 xm = .[i1]: n = .[g1]
  13.                 m = 0
  14.                 For i = 1 To UBound(arr)
  15.                     If arr(i, 6) = xm Then
  16.                         m = m + 1: r = Application.Match(xm, wk.Sheets(1).[j:j], 0)
  17.                         For j = 1 To 5
  18.                             brr(m, j) = arr(i, j)
  19.                         Next
  20.                     End If
  21.                 Next
  22.                 For i = 1 To m
  23.                     If i = 1 Then
  24.                         brr(i, 6) = r - 4
  25.                     Else
  26.                         brr(i, 6) = brr(i, 1) - brr(i - 1, 1)
  27.                     End If
  28.                 Next
  29.                 brr(m + 1, 6) = .[c1] - brr(m, 1)
  30.                 .Range("e5:i" & n - 4).ClearContents
  31.                 .Range("e5").Resize(n - 4, UBound(brr, 2)) = brr
  32.             End With
  33.         Case "1"
  34.             Set wb = Application.Workbooks("1 组三.xlsm")
  35.             With wb.Sheets(1)
  36.                 xm = .[i1]: n = .[g1]
  37.                 m = 0
  38.                 For i = 1 To UBound(arr)
  39.                     If arr(i, 6) = xm Then
  40.                         m = m + 1: r = Application.Match(xm, wk.Sheets(1).[j:j], 0)
  41.                         For j = 1 To 5
  42.                             brr(m, j) = arr(i, j)
  43.                         Next
  44.                     End If
  45.                 Next
  46.                 For i = 1 To m
  47.                     If i = 1 Then
  48.                         brr(i, 6) = r - 4
  49.                     Else
  50.                         brr(i, 6) = brr(i, 1) - brr(i - 1, 1)
  51.                     End If
  52.                 Next
  53.                 brr(m + 1, 6) = .[c1] - brr(m, 1)
  54.                 .Range("e5:i" & n - 4).ClearContents
  55.                 .Range("e5").Resize(n - 4, UBound(brr, 2)) = brr
  56.             End With
  57.         Case "2"
  58.             Set wb = Application.Workbooks("2 组六.xlsm")
  59.             With wb.Sheets(1)
  60.                 xm = .[i1]: n = .[g1]
  61.                 m = 0
  62.                 For i = 1 To UBound(arr)
  63.                     If arr(i, 6) = xm Then
  64.                         m = m + 1: r = Application.Match(xm, wk.Sheets(1).[j:j], 0)
  65.                         For j = 1 To 5
  66.                             brr(m, j) = arr(i, j)
  67.                         Next
  68.                     End If
  69.                 Next
  70.                 For i = 1 To m
  71.                     If i = 1 Then
  72.                         brr(i, 6) = r - 4
  73.                     Else
  74.                         brr(i, 6) = brr(i, 1) - brr(i - 1, 1)
  75.                     End If
  76.                 Next
  77.                 brr(m + 1, 6) = .[c1] - brr(m, 1)
  78.                 .Range("e5:i" & n - 4).ClearContents
  79.                 .Range("e5").Resize(n - 4, UBound(brr, 2)) = brr
  80.             End With
  81.         Case "3"
  82.             For Each wb In Application.Workbooks
  83.                 If wb.Name <> ThisWorkbook.Name Then
  84.                     With wb.Sheets(1)
  85.                         xm = .[i1]: n = .[g1]
  86.                         m = 0
  87.                         For i = 1 To UBound(arr)
  88.                             If arr(i, 6) = xm Then
  89.                                 m = m + 1: r = Application.Match(xm, wk.Sheets(1).[j:j], 0)
  90.                                 For j = 1 To 5
  91.                                     brr(m, j) = arr(i, j)
  92.                                 Next
  93.                             End If
  94.                         Next
  95.                         For i = 1 To m
  96.                             If i = 1 Then
  97.                                 brr(i, 6) = r - 4
  98.                             Else
  99.                                 brr(i, 6) = brr(i, 1) - brr(i - 1, 1)
  100.                             End If
  101.                         Next
  102.                         brr(m + 1, 6) = .[c1] - brr(m, 1)
  103.                          .Range("e5:i" & n - 4).ClearContents
  104.                          .Range("e5").Resize(n - 4, UBound(brr, 2)) = brr
  105.                     End With
  106.                 End If
  107.              Next
  108.          Case Else
  109.             Exit Sub
  110.     End Select
  111.     Application.ScreenUpdating = True
  112.     MsgBox Format(Timer - tms, "0.000s")
  113. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-5 23:45 | 显示全部楼层

简单测试了一下,已解决问题。明天代人实际工作簿中验证。谢谢版主!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-6 00:42 | 显示全部楼层
本帖最后由 WYS67 于 2018-10-6 02:00 编辑

版主老师:当《2 组六》分表关闭情况下,指定J1为2时,点击宏按钮,就会出现“......错误‘9’:下标越界”警告!怎样把警告置换成与之对应的“《2 组六》未打开”的明显提醒?
如下边截图,当《0 三同》分表关闭情况下,指定J1为0时,点击宏按钮,就会出现“......错误‘9’:下标越界”警告!怎样把警告置换成与之对应的“《0 三同》未打开”的明显提醒?
   20181006015204.png


同样的问题,还有《1 组三》分表关闭情况下,指定J1为1时,点击宏按钮,就会出现“......错误‘9’:下标越界”警告!怎样把警告置换成与之对应的“《1 组三》未打开”的明显提醒?

而指定J1为3时,点击宏按钮,不会出现上述情况,可显示“更新所有分表”的明显提醒,这样,清楚明了,一目了然!不至于因为失误更新其他分表。

TA的精华主题

TA的得分主题

发表于 2018-10-6 10:19 | 显示全部楼层
WYS67 发表于 2018-10-6 00:42
版主老师:当《2 组六》分表关闭情况下,指定J1为2时,点击宏按钮,就会出现“......错误‘9’:下标越界 ...

你一会儿说打开更新,一会儿又说不打开更新,晕死!

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2025-1-16 08:20 , Processed in 0.029174 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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