ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 代码执行不了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-4 11:22 | 显示全部楼层 |阅读模式
哪位大师能帮我看下模块里的代码为什么执行不了呢

强度评定.rar

190.66 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2023-6-4 11:47 | 显示全部楼层
本帖最后由 shiruiqiang 于 2023-6-4 15:51 编辑

1、建议不要反复操作单元格,数据量一大就卡。2,代码思路看不懂
Sub FillData()
Dim x, m, n, j
Dim arr, brr(1 To 4000, 1 To 8)
Dim starday, endday, qd

Dim sht As Worksheet

For Each sht In Sheets
sht.Unprotect ("123456")'密码
Next


starday = Sheets("抗压强度评定").[o3]
endday = Sheets("抗压强度评定").[o4]
qd = Sheets("抗压强度评定").[p4]
arr = Sheets("试块强度输入").[a1].CurrentRegion
For x = 2 To UBound(arr)
If CDate(arr(x, 2)) >= CDate(starday) And CDate(arr(x, 2)) <= CDate(endday) Then
If arr(x, 11) = qd Then
If arr(x, 9) <> "" Then
n = n + 1
If n Mod 8 = 0 Then
j = (n \ 8)
m = 8
Else
j = (n \ 8) + 1
m = n Mod 8
End If
brr(j, m) = arr(x, 8)
End If
End If
End If
Next


Sheets("抗压强度评定").[e5:l35].ClearContents
If n > 0 And n <= 248 Then
Sheets("抗压强度评定").[e5].Resize(j, 8) = brr
Else
MsgBox "提取到的数据共:" & n & "个;超过248个数量!"
GoTo 100:
Exit Sub
End If

100:
For Each sht In Sheets
sht.Protect ("123456")
Next


End Sub




TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-4 14:19 | 显示全部楼层
shiruiqiang 发表于 2023-6-4 11:47
1、建议不要反复操作单元格,数据量一大就卡。2,代码思路看不懂
Sub FillData()
Dim x, m, n, j

麻烦老师能不能帮我加个工作表保护的代码,因为这两个工作中还有很多函数,不加保护,担心有时候函数会被误删了

TA的精华主题

TA的得分主题

发表于 2023-6-4 15:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼上修改了,等审核。或者照截图自己抄一下

image.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-4 18:25 | 显示全部楼层
本帖最后由 雷雷爸 于 2023-6-4 19:31 编辑
shiruiqiang 发表于 2023-6-4 15:54
楼上修改了,等审核。或者照截图自己抄一下

老师,工作簿里还有其他工作表,并且有自动更新的图片,一旦所有工作表循环加密撤销保护的话,更新图片的工作表会报错,因为工作表加密里面的编辑对象勾选就被取消了,能不能只对这两个工作表进行循环保护,

TA的精华主题

TA的得分主题

发表于 2023-6-4 19:36 | 显示全部楼层
雷雷爸 发表于 2023-6-4 18:25
老师,工作簿里还有其他工作表,并且有自动更新的图片,一旦所有工作表循环加密撤销保护的话,更新图片的 ...

Sub FillData()
Dim x, m, n, j
Dim arr, brr(1 To 4000, 1 To 8)
Dim starday, endday, qd


Sheets("抗压强度评定").Unprotect ("123456")'密码
Sheets("试块强度输入").Unprotect ("123456")'密码


starday = Sheets("抗压强度评定").[o3]
endday = Sheets("抗压强度评定").[o4]
qd = Sheets("抗压强度评定").[p4]
arr = Sheets("试块强度输入").[a1].CurrentRegion
For x = 2 To UBound(arr)
If CDate(arr(x, 2)) >= CDate(starday) And CDate(arr(x, 2)) <= CDate(endday) Then
If arr(x, 11) = qd Then
If arr(x, 9) <> "" Then
n = n + 1
If n Mod 8 = 0 Then
j = (n \ 8)
m = 8
Else
j = (n \ 8) + 1
m = n Mod 8
End If
brr(j, m) = arr(x, 8)
End If
End If
End If
Next


Sheets("抗压强度评定").[e5:l35].ClearContents
If n > 0 And n <= 248 Then
Sheets("抗压强度评定").[e5].Resize(j, 8) = brr
Else
MsgBox "提取到的数据共:" & n & "个;超过248个数量!"
GoTo 100:
Exit Sub
End If

100:
Sheets("抗压强度评定").Protect ("123456")'密码
Sheets("试块强度输入").Protect ("123456")'密码

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-4 20:47 | 显示全部楼层
shiruiqiang 发表于 2023-6-4 19:36
Sub FillData()
Dim x, m, n, j
Dim arr, brr(1 To 4000, 1 To 8)

非常感谢老师,麻烦您这么多次,这次终于完美解决了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 09:24 , Processed in 0.038983 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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