ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA 简化 问题 ? 谢谢谢谢谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-1-22 20:21 | 显示全部楼层 |阅读模式
本帖最后由 lobai0124 于 2018-1-23 10:09 编辑

VBA 是以下

Sheets("DAILY").Select
y = Range("A20").End(xlUp).Row - 2
With Sheets("RECORD")
x = .Range("a65536").End(xlUp).Row + 1
For i = 0 To y
.Cells(x + i, 1) = "=now()"
.Cells(x + i, 2) = Cells(i + 15, 1)
.Cells(x + i, 3) = Cells(i + 15, 2)
.Cells(x + i, 4) = Cells(i + 15, 3)
.Cells(x + i, 5) = Cells(i + 15, 4)

请问如果A列是算式,应该不能用.有辨法变成可用吗??
如不能
以下是之前用的,能否简化? MSGBOX可不要


Sub FILL_RECORD()
  Dim Row As Byte
  Dim Lb()
  Dim Ls(5)
  With Sheets("DAILY")
    Ls(0) = .Range("k2")
    Ls(1) = .Range("l2")
    Ls(2) = .Range("t2")
    For Row = 1 To 5
      If .Cells(1 + Row, 13) <> "" Then
        Ls(3) = Ls(3) + 1
        ReDim Preserve Lb(1 To 13, 1 To Ls(3))
        Lb(1, Ls(3)) = Ls(0)                           
        Lb(2, Ls(3)) = Format(Ls(1), "YYYYMMDD")
        Lb(3, Ls(3)) = .Cells(1 + Row, 13)              
        Lb(4, Ls(3)) = .Cells(1 + Row, 14)           
        Lb(5, Ls(3)) = .Cells(1 + Row, 15)              
        Lb(6, Ls(3)) = .Cells(1 + Row, 16)            
        Lb(7, Ls(3)) = .Cells(1 + Row, 17)  
        Lb(8, Ls(3)) = .Cells(1 + Row, 18)      
        Lb(9, Ls(3)) = .Cells(1 + Row, 19)         
        Lb(10, Ls(3)) = .Cells(1 + Row, 20)         
        Lb(11, Ls(3)) = .Cells(1 + Row, 21)            
        Lb(12, Ls(3)) = .Cells(1 + Row, 22)           
        Lb(13, Ls(3)) = .Cells(1 + Row, 23)         
      End If
    Next
  End With
  With Sheets("RECORD")
    If Len(Ls(3)) > 0 Then
      If IsError(Application.Match(Ls(0), .Range("B:B"), 0)) Then
        Ls(4) = Application.CountA(.Range("A:A")) + 1
        .Cells(Ls(4), 1).Resize(UBound(Lb, 2), UBound(Lb)) = Application.Transpose(Lb)
      Else
        MsgBox "ERROR", 16
      End If
    Else
      MsgBox "ERROR", 16
    End If
  End With
  Sheets("RECORD").Select

End Sub

problem.rar

73.27 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2018-1-22 21:06 | 显示全部楼层
个人认为你直接上附件并描述需求更好!

TA的精华主题

TA的得分主题

发表于 2018-1-22 21:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感觉你是公式较熟的VBA新手,程序里面带着excel的公式思路,再夹杂着录制宏的代码写法。。。。代码懒得看,但是下面的我截取的这部分可以用循环实现,自己先好好想下吧。。。
Lb(3, Ls(3)) = .Cells(1 + Row, 13)              
        Lb(4, Ls(3)) = .Cells(1 + Row, 14)           
        Lb(5, Ls(3)) = .Cells(1 + Row, 15)              
        Lb(6, Ls(3)) = .Cells(1 + Row, 16)            
        Lb(7, Ls(3)) = .Cells(1 + Row, 17)  
        Lb(8, Ls(3)) = .Cells(1 + Row, 18)      
        Lb(9, Ls(3)) = .Cells(1 + Row, 19)         
        Lb(10, Ls(3)) = .Cells(1 + Row, 20)         
        Lb(11, Ls(3)) = .Cells(1 + Row, 21)            
        Lb(12, Ls(3)) = .Cells(1 + Row, 22)           
        Lb(13, Ls(3)) = .Cells(1 + Row, 23)   

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-23 09:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lobai0124 于 2018-1-23 09:31 编辑

其实我没有电脑底子,只是自学.
以上都是网上拿取的 , 方便工作上用的
我一直想把下部份vba的msgbox 移除 , 但都不成功
麻烦帮忙修改一下吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 09:20 , Processed in 0.039444 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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