您当前的位置:首页 > 时尚 > 内容

如何用vba插入公式(vba replace函数)

如何用vba插入公式(vba replace函数)?如果你对这个不了解,来看看!

利用EXCEL制作会动的时钟,下面是是EK呀给大家的分享,一起来看看。

如何用vba插入公式

好久的没有更新了,今天准备给大家分享一个利用EXCEL制作时钟的案例。

这里,很多小伙伴们可能会说,EXCEL可以做时钟吗?答案当然是可以的。下面,EK就慢慢给大家分享制作过程。

首先我们看一下案例效果图:

图1 钟表效果图

案例里面使用了VBA和图表。

第一步,我们新建一个“钟表.xlsm”文件(可以使用VBA)。

图2 新建一个XLSM文件

第二步,准备辅助数据。A3:F123中的数据。

图3 Sheet2中A3:F123单元格区域的数据

第三步,在H1中添加公式:="时间:" & TEXT(NOW(),"hh:mm:ss")

G4:=IF(HOUR(NOW())>12,(HOUR(NOW())-12+MINUTE(NOW())/60)*30,(HOUR(NOW())+MINUTE(NOW())/60)*30)

表示取当前时间对应小时的刻度。

G5:1

小时指针的宽度

G6:=360-G4-G5

H4:=MINUTE(NOW())*6

H5:0.5

H6:=360-H4-H5

I4:=SECOND(NOW())*6

I5:0

I6:=360-I4-I5

第四步,将B4:F123选中,点击【插入】-》【圆环图】。操作如下图:

图4 插入圆环图

第五步,处理圆环图。

<1> 将内圈2个小圆环图设置为无填充,无实线。这里是为了区分钟表的时针、分针、秒针的长度所做的辅助圆环。等下小伙伴们就会明白为什么这么做。

图5 设置内圈圆环格式

<2> 设置外圈三个圆环的格式。最外圈如下图:

图6 最外圈格式

第三个内圈设置无填充和无实线,次外圈添加数据标签。

图7 设置第2个第3个外圈

设置第2个内圈的标签格式,同时设置为无填充和无线条,如下:

图8 生成总表时针标签

添加时分秒数据进入图表中,首先添加时针。操作如下,为了演示方便我先将时针的指针大小设置为20.

图9-1

图9-2

图9-3

同理,我们可以将分针和秒针也放进图标中,这里,EK就简单略过,直接实现了。小伙伴们可以按照时针的输入方法进行放入。图10 为实现后的效果:

图10 钟表图

我们为单元格H1添加公式:="时间:" & TEXT(NOW(),"hh:mm:ss") 并且为当前图表添加标题,标题内容为H1(当前时间)中的内容:

图11 添加时间

第六步,打开ALT+F11组合键,也可以点击【开发工具】-》【查看代码】。添加一个模块。添加如下代码:

Sub StartTimer()

Sheet2.Range("h1") = "=""时间:"" & TEXT(NOW(),""hh:mm:ss"")"

Application.OnTime Now + TimeValue("00:00:01"), "StartTimer"

End Sub

Sub EndTimer()

On Error Resume Next

Application.OnTime Now + TimeValue("00:00:01"), "StartTimer", , False

End Sub

如下图所示:

图12 添加代码

插入两个按钮-【开始时钟】【停止时钟】:指定宏分别为-》StartTimer和-》EndTimer:

图13 添加按钮

咱们来看一下实现效果,

图14 时钟效果图

我们对时钟界面进行稍微修正美化一下,就可以看到图1 的效果了。

最后,感谢小伙伴们的观看,我是EK。如果上述内容能够帮助到你们,希望你们能点赞,关注,评论,转发,你们不清楚的地方我会尽力为大家解答,谢谢大家的支持。我会给大家带来更多关于EXCEL的小技巧。

vba replace函数

很多Excel VBA文章和图书都介绍过如何优化VBA代码,使代码运行得更快。一些使Excel VBA代码运行更快的技术和技巧,与大家分享。鉴于VBA与VB的关系,资料中绝大多数技巧对于VBA同样适用。其中的大多数代码都是亲自在VBA中测试过的,某些地方加了一点注解。

1.妙用Replace函数替代字符串连接操作符&

你大概不知道Replace函数还能这么用吧?比如下面的语句:

MsgBox "Disk not ready." & vbCr & vbCr & _ "Please check that the diskette is in the drive" & vbCr & _ "and that the drive's door is closed.“

可以看出,为了显示完整的字符串含义,要将可打印字符与非打印字符(比如:回车符vbCr)用&符号连接在一起.结果是:长长的字符连接串变得难于阅读.但是,使用Replace函数,可以巧妙地解决这个问题.方法就是:将非打印字符以字符串中不出现的一个可打印字符表示,这样完整地写出整个字符串,然后使用Replace函数替换那个特别的打印字符为非打印字符(比如:回车符vbCr).代码如下:

MsgBox Replace("Disk not ready.§§Please check that the diskette is in the " _ & "drive§and that the drive's door is closed.", "§", vbCr)

2.固定长度字符串数组:赋值快,释放快!

固定长度字符串的处理速度通常慢于可变长度字符串,这是因为所有的VB字符串函数和命令只能识别可变长度字符串.因此,所有固定长度字符串必然被转换为可变长度字符串.

但是,由于固定长度字符串数组占据着一块连续的内存区域,因此在被分配以及释放时,速度明显快于可变长度的数组.比如:在一个Pentium 233MHz机器上,对于一个固定长度为100,000的数组,给其中30个位置分配数值,大约只花费半秒种的时间.而如果是可变长度的数组,同样的操作要耗费8秒之多!后者的删除操作耗时大约0.35秒,但固定长度的数组几乎可以立即"毙命"!如果应用程序中涉及到这么大的一个数组操作,选择固定长度方式数组绝对是确定无疑的了,无论是分配数值,还是释放操作,都可以风驰电掣般完成.

3.创建任意长度重复字符串的简洁方法

String$函数只能重复复制单字符(99%的朋友都知道吧),当需要重复复制2个或多个字符时,就需要一个循环.看起来是否很麻烦?

然而,使用以下的函数就能解决这个问题.基本思路是:建立一个空格字符串,其长度为要重复复制的数目,然后替换每一个空格为要复制的字符串:

Function ReplicateString(Source As String, Times As Long) As String ReplicateString = Replace$(Space$(Times), " ", Source) End Function

但是请注意:根据字符串的长度以及重复的数目,这个方法也许比传统的循环方法要慢些.

4.处理字符串中的字符:字节数组法

当要处理字符串中的每一个字符时,可以将字符串赋值到一个byte数组中进行操作.要记住:每一个Unicode字符对应双字节.

这种方法通常要快许多,因为节省了大量的Mid$函数操作以及大量的临时字符串空间.下面的代码是统计字符串中空格数目的最快方法

Dim b() as Byte, count As Integer b() = source$ For i = 0 to UBound(b) Step LenB("A") If b(i) = 32 Then count = count + 1 Next

请注意上面代码中LenB()函数的特殊用法:在VB4(32位)、VB5和VB6中它返回数值2, 在VB4(16位)中返回数值1.因此,我们就可以使用同一代码段,而无需#If编译指令.

5.无闪烁地快速附加字符串到textbox控件

附加文本到TextBox或者RichTextBox控件的通常方法是在当前内容上连接上新的字符串:

Text1.Text = Text1.Text & newString

但还有一个更快的方法,并且会减少连接操作的闪烁感,代码如下:

Text1.SelStart = Len(Text1.Text) Text1.SelText = newString

关于带有特定目的的VBA方法的更多的信息,您可参见VBA帮助系统相关主题。

结语

当然,代码优化可能不是绝对必要的,这依赖于您要做的工作……如果您正好编写了一个快速且简短的或者是一次性使用且与速度和/或简洁要求无关的代码,您就不需要优化代码。

但另一方面,如果您处理一个带有很多数据、工作簿、工作表等大的工程,再次检查您第一次编写好的代码,看看是否您的代码需要优化,而这样做总是值得的。

最终,您将养成编写代码的好习惯,将会使您的代码更简洁、运行更快速、并且容易为您自已和他人阅读和调试。同时,由于您的代码简洁,因而输入更快,工作效率更高。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 社保卡和医保卡:便利社会保障与医疗保险

下一篇: 向羽起重机械设备厂(向羽)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号