Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: wangkaiwei

[已解决]如何在excle单元格中编写的vba语言当插入一列的时候公式也自动改变?

  [复制链接]
 楼主| 发表于 2012-4-14 10:20 | 显示全部楼层
梅一枝 发表于 2012-4-13 11:51
个人感觉 列号设置个变量,代码会简单的多。不知道行不行

列号变量是什么意思?按照顺序设个x、y、z的变量吗?能不能具体给点提示?谢谢~
回复

使用道具 举报

发表于 2012-4-14 16:38 | 显示全部楼层
wangkaiwei 发表于 2012-4-14 08:03
工作忙,没有及时回复,不好意思~
上述代码在编程的模块3中,附件已上传
这个小程序是自己研究的,全部 ...

还有密码的...

密码呢??
回复

使用道具 举报

 楼主| 发表于 2012-4-14 16:43 | 显示全部楼层
无聊的疯子 发表于 2012-4-14 16:38
还有密码的...

密码呢??

奇怪,我已经删除了怎么还有呢:2413
回复

使用道具 举报

发表于 2012-4-14 17:00 | 显示全部楼层
wangkaiwei 发表于 2012-4-14 16:43
奇怪,我已经删除了怎么还有呢:2413

你还是重新传一个没密码的吧,我输入N次,密码都不对...
回复

使用道具 举报

 楼主| 发表于 2012-4-15 08:11 | 显示全部楼层
无聊的疯子 发表于 2012-4-13 11:21
只看代码,并无公式!!

但是代码具有很大的优化空间!!所以,附件很重要!!

我下载了,vba编辑器是直接进去的,里面没有密码啊?sheet1窗口有锁定,密码是123,不知道你问的是不是这个
回复

使用道具 举报

发表于 2012-4-15 08:30 | 显示全部楼层
wangkaiwei 发表于 2012-4-15 08:11
我下载了,vba编辑器是直接进去的,里面没有密码啊?sheet1窗口有锁定,密码是123,不知道你问的是不是这 ...

8楼和9楼的附件都不一样....

我说的是8楼的附件里的工作表保护密码!不是VBA工程密码!

你的VBA里又没有公式,所以只有看工作表里的公式啊!
回复

使用道具 举报

发表于 2012-4-15 09:04 | 显示全部楼层
wangkaiwei 发表于 2012-4-14 08:03
工作忙,没有及时回复,不好意思~
上述代码在编程的模块3中,附件已上传
这个小程序是自己研究的,全部 ...

该代码为 8 楼附件中模块3的代码优化!

代码取消K11的状态提示输入,在代码中使用了 Exit Sub,强制退出过程
使用了Range.End 方法来判断不固定的列,end 的 () 中有4个方向,
关于该方法的使用详解:
http://www.excelpx.com/thread-224527-1-1.html   5楼详解


  1. Sub Fw()
  2. Dim Lx As Byte, Hx As Long
  3.   With Sheet1
  4.     Lx = .Range("F4").End(xlToRight).Column   '以F4 单元格为基点,往右找到最后一个非空单元格所在的列
  5.     If Application.CountA(.Range(.Cells(5, "F"), .Cells(5, Lx - 1))) <> Lx - 6 Then
  6.       '使用 CountA 统计 F5 到上面找到的列之前的非空单元格的个数,
  7.       '如果统计出来的个数 <> lx-6 说明信息输入不完整
  8.       
  9.       MsgBox "请输入完整的信息后在点确定!", , "信息输入不完整"    '给出提示框
  10.       Exit Sub    '退出过程
  11.     End If
  12.     Hx = Sheet2.Range("A65536").End(xlUp).Row + 1   '在Sheet2表中以A65536为基点往上查找最后一个非空单元格所在的行 +1 行,就是我们要写入数据的行
  13.     Sheet2.Range("A" & Hx).Resize(, Lx - 5) = .Range("F5").Resize(, Lx - 5).Value   '使用 Resize来扩展区域,使数据一次写入
  14.     .Range(.Cells(5, "F"), .Cells(5, Lx)).ClearContents   '写入完成后清除第5行中的内容
  15.   End With
  16. End Sub
复制代码

回复

使用道具 举报

 楼主| 发表于 2012-4-15 10:51 | 显示全部楼层
无聊的疯子 发表于 2012-4-15 08:30
8楼和9楼的附件都不一样....

我说的是8楼的附件里的工作表保护密码!不是VBA工程密码!

8楼工作表sheet1保护密码是123,谢谢你的回答,我学习下给你回复~
回复

使用道具 举报

 楼主| 发表于 2012-4-15 16:55 | 显示全部楼层
无聊的疯子 发表于 2012-4-13 10:27
提供具体的附件来说明你的情况!!

一般来说,这种情况直接使用公式就行了的,就没必要非得把问题搞那么 ...

想给你那个优化建议最佳答案,但是找不到回复了,就用这个代替了哈~
回复

使用道具 举报

发表于 2012-4-16 11:21 | 显示全部楼层
无聊的疯子 发表于 2012-4-15 09:04
该代码为 8 楼附件中模块3的代码优化!

代码取消K11的状态提示输入,在代码中使用了 Exit Sub,强制退出过 ...

还有些问题想请教下:
1、 Lx = .Range("F4").End(xlToRight).Column  这条代码中,“Column ”是否可以删除呢?
2、    If Application.CountA(.Range(.Cells(5, "F"), .Cells(5, Lx - 1))) <> Lx - 6 Then  (为什么要减6,不是减 7,是不是因为我要增加一列,所以你也多减去了1?)
3、Sheet2.Range("A" & Hx).Resize(, Lx - 5) = .Range("F5").Resize(, Lx - 5).Value   '使用 Resize来扩展区域,使数据一次写入
这个短语看的不是很懂,能不能解释下代码的意思?谢谢~
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 06:37 , Processed in 0.334024 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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