ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA入门之二《一夜暴富》

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2007-5-26 14:02 | 显示全部楼层
本帖已被收录到知识树中,索引项:数据类型和基本语句

从示例中可知

选定单元格所在的行
ActiveCell.ROWS("1:1").EntireRow.Select

TA的精华主题

TA的得分主题

发表于 2007-5-26 16:32 | 显示全部楼层

向山菊花斑竹求助!

自己在封装一般自定义函数时都成功了的,但这次封装一个代窗体的vba代码也应该是成功了的,因为封装时vb没有提示错误,现在我却不知道该用什么语句来调出被封装了的窗体了?请高手赐教!先谢谢了!!自己在vb封装的工程名为工程1,类模块名为class1,生成的dll文件名也为工程1.dll,并保存在原文件同一目录下的,也是方便移植,在vba引用中找到了我封装的工程1.dll并打上了钩,就是调不出被封装的窗体,自己企图用调用原函数的方法来调出窗体,如以下语句

Sub dc()
Dim cx As New Class1
cx.Worksheet_SelectionChange(target)
Set cx = Nothing
End Sub
但没有成功

窗体未被封装前用以下语句即可雕出窗体,很好使的,

Private Sub Worksheet_SelectionChange(ByVal target As Range)
Load UserForm1
UserForm1.Show
End Sub

可能自己的思路和方法有问题,再次恳请高手赐教!

TA的精华主题

TA的得分主题

发表于 2007-6-3 09:02 | 显示全部楼层

  山菊花版主:您好!

  我在作练习1时,用的代码如下

Sheets("Sheet3").Select
    Application.CommandBars("Stop Recording").Visible = False
     Sheets("Sheet3").Name = "我的工作表"
    Range("E11").Select
  Sheets("我的工作表").Select

  问题是我第一次点击时未出现下标越界情况,再点击时就有下标越界错误;我想是因为已无Sheet3表名的原因。我希望有此情况时出现“已修改”或其他适当的提示,其代码应作何修改?另外,上述代码有无错处?

[此贴子已经被作者于2007-6-3 11:21:47编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-3 19:15 | 显示全部楼层

回复:(57wk)再点击时就有下标越界错误

1、你的判断是正确的,第一次运行程序,将工作表名Sheet3改名为“我的工作表”,第二次运行程序因为没有工作表Sheet3而出错。

这种情况在实际应用中常有,正确的做法是启动一个错误处理程序,决定当发生错误时如何运行程序:

On Error Resume Next '当程序出现错误时,略过出现错误的代码,继续运行下一条语句
Sheets("Sheet3").Select  '如果不存在工作表名Sheet3,本代码将发生错误
If Err.Number > 0 Then  '如果上一句代码出现错误,运行下一行代码
    MsgBox "工作表 Sheet3 不存在", 48, "警告"
Else  '如果上面代码没出现错误,则运行下一行代码
    Sheets("Sheet3").Name = "我的工作表"
End If

2、原代码没有错误,只是存在多余的代码,可删去。

Application.CommandBars("Stop Recording").Visible = False  '隐藏“停止录制”工具栏,这句多余

Range("E11").Select  '激活E11单元格没实际意义,可删去

Sheets("我的工作表").Select '本工作表已激活,本句代码多余

TA的精华主题

TA的得分主题

发表于 2007-6-3 21:22 | 显示全部楼层
  谢谢山菊花版主在百忙之中给予回复!!!

TA的精华主题

TA的得分主题

发表于 2007-6-26 17:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习的好贴.

TA的精华主题

TA的得分主题

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

有二个问题想请教一下:

1。Shift:=xlUp 这是不是下方单元格上移的意思啊

2。ActiveCell.Offset(6, 0).Range("A1").Select '光标定位到6行后的第1个单元格

怎么解释A1是第1个单元格

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-6-29 23:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复:(xhbin)有二个问题想请教一下

QUOTE:
以下是引用xhbin在2007-6-29 23:25:25的发言:

有二个问题想请教一下:

1。Shift:=xlUp 这是不是下方单元格上移的意思啊

在Delete方法中,该参数表示下方单元格上移的意思。

对代码有怀疑的地方,可以重新录制一遍,操作过程中选择另一个选项,然后对比两段代码。

QUOTE:

2。ActiveCell.Offset(6, 0).Range("A1").Select '光标定位到6行后的第1个单元格
  

怎么解释A1是第1个单元格

默认情况下,Range("A1")表示工作表的第1行第1列的那个单元格,还可以指定工作簿中特定的工作表,如Sheet2.Range("A1")。

其实,工作表中任意一个区域,也存在“第1行第1列的单元格”,这个单元格也可以称作“这个区域的Range("A1")”,如区域I6:K10,它的“第1行第1列所在单元格”是I6,这个单元格可以表示为:Range("I6:K10").Range("A1"),同理,Range("I6:K10").Range("B2")表示J7单元格。

[此贴子已经被作者于2007-6-30 0:07:53编辑过]

TA的精华主题

TA的得分主题

发表于 2007-6-30 00:03 | 显示全部楼层
不愧为版主,这么热心,谢谢

TA的精华主题

TA的得分主题

发表于 2007-6-30 03:20 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-1 12:21 , Processed in 0.052483 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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