Excel精英培训网

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

[已解决](合同管理)如何设置VBA让单元格日期如何自动跳转到下一个月?

[复制链接]
发表于 2013-11-14 13:06 | 显示全部楼层 |阅读模式
本帖最后由 jasoncheung 于 2013-11-20 14:51 编辑

QQ截图20131113213033.png 111111.png

如图所示,我做了一个物业租赁合同管理系统,从“主界面”向“数据源”赋值。问题如下:

1.如何根据“基础物业信息”表达数据筛选A5到D5单元格的值,即假如我A5选“写字楼”,B5单元格如何根据A5单元格的条件设置下拉菜单选择“租赁楼层”,C5单元格根据B5单元格的条件设置下拉单元格选择租赁单元,E5单元格根据D5单元格的条件选择相应单元的“建筑面积”。
2. 写字楼的租赁单元是空的,当选写字楼时,C5单元格是空值,建筑面积直接为租赁楼层面积,商场有租赁单元,当选商场单元时,C5单元格不是空值,建筑面积为租赁单元面积,这两者如何综合考虑?
另外:当我点击“确定”输入一条信息后,B7和C7的租赁起始日和租赁终止日如何编写代码能自动跳转到下一个月的第一天和最后一天?
谢谢大家都支持,帮我完善这个系统,方便大家

密码是:851221


附注:源数据代码:

Dim s As Integer
Private Sub CommandButton1_Click()
Dim a As Integer
a = Sheets("数据源").[a65536].End(xlUp).Row
With Sheets("数据源")
.Unprotect Password:=""
.Range("B" & a + 1) = Range("A3").Value
.Range("C" & a + 1) = Range("A5").Value
.Range("D" & a + 1) = Range("B5").Value
.Range("E" & a + 1) = Range("C5").Value
.Range("F" & a + 1) = Range("D5").Value
.Range("G" & a + 1) = Range("E5").Value
.Range("H" & a + 1) = Range("F5").Value
.Range("I" & a + 1) = Range("A7").Value
.Range("J" & a + 1) = Range("B7").Value
.Range("K" & a + 1) = Range("C7").Value
.Range("L" & a + 1) = Range("D7").Value
.Range("M" & a + 1) = Range("E7").Value
.Range("N" & a + 1) = Range("F7").Value
.Range("O" & a + 1) = Range("A9").Value
.Range("P" & a + 1) = Range("B9").Value
.Range("Q" & a + 1) = Range("C9").Value
.Range("R" & a + 1) = Range("D9").Value
.Range("S" & a + 1) = Range("E9").Value
.Range("T" & a + 1) = Range("F9").Value
.Range("A" & a + 1) = a
.Range("A1:T" & a + 1).Locked = True
.Protect Password:=""
End With
End Sub

Private Sub CommandButton2_Click()
Sheets(1).Cells(3, 1).Formula = ""
Sheets(1).Cells(5, 1).Formula = ""
Sheets(1).Cells(5, 2).Formula = ""
Sheets(1).Cells(5, 3).Formula = ""
Sheets(1).Cells(5, 4).Formula = ""
Sheets(1).Cells(5, 5).Formula = ""
Sheets(1).Cells(7, 1).Formula = ""
Sheets(1).Cells(7, 2).Formula = ""
Sheets(1).Cells(7, 3).Formula = ""
Sheets(1).Cells(7, 4).Formula = ""
Sheets(1).Cells(7, 5).Formula = ""
Sheets(1).Cells(7, 6).Formula = ""
Sheets(1).Cells(9, 1).Formula = ""
Sheets(1).Cells(9, 2).Formula = ""
Sheets(1).Cells(9, 3).Formula = ""
Sheets(1).Cells(9, 4).Formula = ""
Sheets(1).Cells(9, 5).Formula = ""
Sheets(1).Cells(9, 6).Formula = ""
End Sub
最佳答案
2013-11-19 14:09
附件请测试,由于电脑OS关系,将“零星物业”改成了“other”,你可以自己改回来,记得代码也要相应修改。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-11-15 10:50 | 显示全部楼层
你不打算提供工程密码吗,我不是想看你的代码,而是我没法写代码了
回复

使用道具 举报

 楼主| 发表于 2013-11-15 12:30 | 显示全部楼层
大灰狼1976 发表于 2013-11-15 10:50
你不打算提供工程密码吗,我不是想看你的代码,而是我没法写代码了

您好,密码是851221
回复

使用道具 举报

发表于 2013-11-15 13:37 | 显示全部楼层
算了,我把你的表格重新复制了一份,把你原来的代码也放进去了,
目前能实现你所要求的功能1、2,但是2里面的最后一个要求不明白,没做,附件请测试
使用方法,打开文件后先点击A5单元格,一路往后进行选择就行了。

物业租赁管理系统.zip

23.07 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2013-11-15 14:13 | 显示全部楼层
本帖最后由 jasoncheung 于 2013-11-15 14:19 编辑
大灰狼1976 发表于 2013-11-15 13:37
算了,我把你的表格重新复制了一份,把你原来的代码也放进去了,
目前能实现你所要求的功能1、2,但是2里面 ...

您好,应该是A7和B7单元格,就是租赁起始日和租赁终止日,应为合同是连续的啊,比如我刚输入的一条是11月底信息,租赁起始日是2013年11月1日,租赁终止日是2011年11月30日,那下一条记录就应该是2013年12月1日到2013年12月31日啊,就是我输完11月这条以后,点击确定以后,A7和B7的单元格怎么能自动跳转到下一个月的第一天和最后一天
就这意思,谢谢
回复

使用道具 举报

发表于 2013-11-15 16:42 | 显示全部楼层
附件请测试

物业租赁管理系统.zip

23.63 KB, 下载次数: 11

回复

使用道具 举报

 楼主| 发表于 2013-11-15 21:26 | 显示全部楼层
大灰狼1976 发表于 2013-11-15 16:42
附件请测试

您好,这个能用了。非常感谢您的帮忙。还有一个问题想咨询您?今后我如果物业基础信息添加新项目了,怎么修改代码。把新项目包括进去?


谢谢!
回复

使用道具 举报

 楼主| 发表于 2013-11-15 22:07 | 显示全部楼层
大灰狼1976 发表于 2013-11-15 16:42
附件请测试

您好,像这样,要有多个项目我怎么修改代码? 修改 - 副本.rar (31.66 KB, 下载次数: 8)
回复

使用道具 举报

 楼主| 发表于 2013-11-16 01:41 | 显示全部楼层
本帖最后由 jasoncheung 于 2013-11-16 02:29 编辑
大灰狼1976 发表于 2013-11-15 16:42
附件请测试

如果直接用项目的名字,不用字符串的长度,因为有的项目字符串一样长,怎么修改代码?
还有这个变量怎么定义的?我什么我把写字楼改个名字就不行了.该完名字提示运行时错误“91”,对象变量或With块变量未设置。.
Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=d(Target.Value) 这是个分别是什么意思?
回复

使用道具 举报

发表于 2013-11-16 10:52 | 显示全部楼层
因为我的电脑是日文系统的,所以代码内不能出现中文,使用字符串长度是权宜之计,
正确做法是就像你说的,直接用项目名字,把If Len([a5]) = 2 Then 改成 If [a5] = "商场" ThenElseIf Len([a5]) = 3 Then 改为 ElseIf [a5] = "写字楼" Then
Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=d(Target.Value) 是设置数据有效性列表的,我直接复制宏后稍加修改得到的,没研究过各个参数的意义
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 16:57 , Processed in 0.614654 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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