ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 带你入门VBA,第五讲:如何控制单元格

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-27 13:52 | 显示全部楼层
请具体说一下关于”选没有数据的行和列“

TA的精华主题

TA的得分主题

发表于 2004-10-27 17:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

呵呵,兰老,我这两天一直跟着你在学.

下面这个问题,我想是不是就可以使用单元格来解决,但我不会做,太复杂了,而且还要有足够的耐心来看,请指教!

我的问题是:

第一步:要把包含"Crosstabs"和"Tables"单词内容之间的所有表格选中(可是不能指定单元格区域,因为我是要在整个工作表里搜索,是不是要用到常量的问题,可是你的内容里我还没有看到)

第二步:将包含"Asymp. Sig. (2-sided)"内容的单元格向下移动一行

第三步:将第二步操作后选中的常量赋值为"P=常量"

第四步:将第三步的结果放在"附表 ****"的文字后面.

不知道这样的问题可不可以实现,如果可以的话,还烦请兰老师逐一指教!再次感谢!

带你入门VBA,第五讲:如何控制单元格

带你入门VBA,第五讲:如何控制单元格

TA的精华主题

TA的得分主题

发表于 2004-10-27 17:14 | 显示全部楼层

不好意思,上面说的太罗索

我其实就是想把上面说的第一步要操作的内容都去掉,只保留0.690,然后改成p=0.690,放到表格的标题后面就可以了.

呵呵,不知道这次说清楚了没有.一直等待........

TA的精华主题

TA的得分主题

发表于 2004-10-27 17:16 | 显示全部楼层

附上EXCEL文件

4NhT77LK.rar (5.36 KB, 下载次数: 69)

TA的精华主题

TA的得分主题

发表于 2004-10-27 18:46 | 显示全部楼层

兰大侠(兄):

您真的太伟大了!谢谢您的无私奉献!

建议在讲解VBA的同时能以工作或生活的应用程式来讲解效果会更好一些?

TA的精华主题

TA的得分主题

发表于 2004-10-27 22:14 | 显示全部楼层

兰大侠你好: 能把下的代码给解释一下?

Private Sub Workbook_BeforeClose(Cancel As Boolean) Terminate Set appTime = Nothing Set objBtn = Nothing End Sub

Private Sub Workbook_Open() Init (1000) End Sub

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long) As Long Dim hTimer Public objBtn As CommandBarControl

Sub TimerProc(ByVal hWnd&, ByVal Msg&, ByVal idEvent&, ByVal dwTime&) DoEvents On Error Resume Next Range("A1") = Format(Now, "hh:mm:ss AM/PM") End Sub

Sub Init(Interval&) hTimer = SetTimer(0, 0, Interval, AddressOf TimerProc) End Sub

Sub Terminate() Call KillTimer(0, hTimer) End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-28 13:24 | 显示全部楼层
以下是引用hpw在2004-10-27 17:14:00的发言:

不好意思,上面说的太罗索

我其实就是想把上面说的第一步要操作的内容都去掉,只保留0.690,然后改成p=0.690,放到表格的标题后面就可以了.

呵呵,不知道这次说清楚了没有.一直等待........

On Error Resume Next 如出错误,执行下一句 K = -9 设置变量K的初始值,设置K目的是控制在"购买可能性"后添加数的位置 EEE = Application.CountIf(Columns(2), "Crosstabs") EEE为循环的次数,有多少个"Crosstabs"就行循环多少次" For I = 1 To EEE 设置循环 K = K + 12 因为每个Pearson Chi-Square相隔12行,所以设置循环一次加12 AAA = Application.Match("Crosstabs", Columns(2), 0) 计算Crosstabs的位置 BBB = Application.Match("Tables", Columns(2), 0) 计算Tables的位置 CCC = Application.Match("Pearson Chi-Square", Columns(2), 0) 计算Pearson Chi-Square的位置 DDD = Format(Cells(CCC, 5), "0.000") 把相应Pearson Chi-Squar的数值赋予DDD,如第一个是0.690 Range(Cells(AAA, 1), Cells(BBB, 1)).EntireRow.Delete 把Crosstabs和Tables之间的行删除(包括含Crosstabs和Tables的行) Cells(K, 2) = "附表 单位购买的可能性(P=" & DDD & ")" 在表头加入相应的内容 Next

mAuMAP8s.rar (13.36 KB, 下载次数: 135)

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-10-28 13:31 | 显示全部楼层
以下是引用hnymlzs在2004-10-27 22:14:00的发言:

兰大侠你好: 能把下的代码给解释一下?

Private Sub Workbook_BeforeClose(Cancel As Boolean) Terminate Set appTime = Nothing Set objBtn = Nothing End Sub

Private Sub Workbook_Open() Init (1000) End Sub

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long) As Long Dim hTimer Public objBtn As CommandBarControl

Sub TimerProc(ByVal hWnd&, ByVal Msg&, ByVal idEvent&, ByVal dwTime&) DoEvents On Error Resume Next Range("A1") = Format(Now, "hh:mm:ss AM/PM") End Sub

Sub Init(Interval&) hTimer = SetTimer(0, 0, Interval, AddressOf TimerProc) End Sub

Sub Terminate() Call KillTimer(0, hTimer) End Sub

请把文件也传上来

TA的精华主题

TA的得分主题

发表于 2004-10-28 13:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

比如我在SHEET1中放置一个按扭,单击就选定没有数据的行,当然了要VBA自己判断到底到哪一行有数据,然后选择剩下没有数据的空白行.

TA的精华主题

TA的得分主题

发表于 2004-10-28 15:07 | 显示全部楼层
以下是引用hnymlzs在2004-10-27 22:14:00的发言:

兰大侠你好: 能把下的代码给解释一下?

Private Sub Workbook_BeforeClose(Cancel As Boolean) Terminate Set appTime = Nothing Set objBtn = Nothing End Sub

Private Sub Workbook_Open() Init (1000) End Sub

Private Declare Function SetTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _ ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hWnd As _ Long, ByVal nIDEvent As Long) As Long Dim hTimer Public objBtn As CommandBarControl

Sub TimerProc(ByVal hWnd&, ByVal Msg&, ByVal idEvent&, ByVal dwTime&) DoEvents On Error Resume Next Range("A1") = Format(Now, "hh:mm:ss AM/PM") End Sub

Sub Init(Interval&) hTimer = SetTimer(0, 0, Interval, AddressOf TimerProc) End Sub

Sub Terminate() Call KillTimer(0, hTimer) End Sub

学得可真快,都到API啦,我也不太懂,跟着学……

上传的代码可能只是一部分,蓝色部分放入thisworkbook模块,褐色部分在普通模块。

作用:类似电子时钟,每秒(1000毫秒)更新一次时间。

工作表打开时运行Init (1000),即运行SetTimer(0, 0, Interval, AddressOf TimerProc),其中IntervalInit 传来的1000;

SetTimer:API函数,用来分配定时器,周期性地在指定间隔的时间过去时调用过程;

有四个参数:第三个参数指定时间间隔,以毫秒为单位(此处1000);第四个参数指定函数的过程实例,即按定时器的通知调用过程,此处调用TimerProc过程。

TimerProc过程将系统时间(now)写入A1单元格,由于定时器的设定,每秒写一次。

关闭工作簿时运行TerminateKillTimer也是API函数,用于清除定时器,终止调用。

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

本版积分规则

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

GMT+8, 2024-11-20 07:24 , Processed in 0.033154 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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