EXCEL VB 高手请进,有问题请教 200
展开全部
VBA是Excel的底层根本。只有明白使用最底层的东西,使用起来才能随心所欲。对于多数读者而言,由于未使用过VBA或者不具备计算机语言知识,所以被VBA直白的语句所吓倒。但是楼主可以肯定的告诉大家,VBA其实很简单,并且很实用。学会后,也会上瘾;变化无穷,很有意思。
一般新的学者都有如下几个问题:
1.在哪编写或者查看我们的VBA代码?
2.告诉Excel什么时候,怎么触发我们的程序?
3.怎么编写我们的VBA代码,怎么用代码引用或者指定到我们的单元格或区域?
下面我以一个双击鼠标后,触发:将两个单元格的数值相加后赋值给第三个单元格。
工具/原料
电脑
Microsoft Excel软件
方法/步骤
打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。
选择如下图所示的下拉菜单,选择“worksheet”。
选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate意思是说:在sheet表被选取的时候,就触发;Change意思是说:在这个模式下,只要sheet(工作表)发生变化,就将触发;Before Right Click是指在鼠标右击之前触发;SelectionChange是指在鼠标焦点发生变化时,触发。)
选择完成后,我们会看到下面出现了两条代码;这俩条代码其实是在声明一个函数。
将鼠标放置在这两行代码之间,我们写上执行语句:
Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
其中:sheet1.cells(1,3)就是指第一行第三列的这个单元格;Sheet1.Cells(1, 1)就是指第一行第一列的这个单元格;Sheet1.Cells(1, 2)就是指第一行第二列的单元格。执行语句的意思是:将cells(1,1)和cells(1,2)的值相加,并赋值给cells(1,3)
注意的是:写语句的时候,输入法一定要是输入字母的模式。要不然你的语句会报错。
然后点击保存,回到Excel的原始界面。在cells(1,1)和cells(1,2)中输入两个数值。(楼主输入的是:125895和78954)
注意看:现在的cells(1,3)数值是空的。
在sheet1的工作表中,双击你的鼠标。你会发现,cells(1,3)的值变成了cells(1,1)和cells(1,2)的和。(204849=125895+78954)
总结:其实VBA主要是触发和指定单元格。
1.触发的原理其实很简单,大家可以选择不同的触发模式,试一下就知道是怎么回事了。
2.至于怎么指定到单元格,大家可以看看cells语句和Range语句。
补充说明: VBA不需要过于复杂的VB语句。你只需要知道VB怎么写怎加减乘除,怎么使用IF语句,就可以满足大部分的需求了。
最后希望大家能够驾驭VBA,顺便送大家一句话:
眼见为虚,耳听为虚,只有运行才是硬道理。
一般新的学者都有如下几个问题:
1.在哪编写或者查看我们的VBA代码?
2.告诉Excel什么时候,怎么触发我们的程序?
3.怎么编写我们的VBA代码,怎么用代码引用或者指定到我们的单元格或区域?
下面我以一个双击鼠标后,触发:将两个单元格的数值相加后赋值给第三个单元格。
工具/原料
电脑
Microsoft Excel软件
方法/步骤
打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。
选择如下图所示的下拉菜单,选择“worksheet”。
选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate意思是说:在sheet表被选取的时候,就触发;Change意思是说:在这个模式下,只要sheet(工作表)发生变化,就将触发;Before Right Click是指在鼠标右击之前触发;SelectionChange是指在鼠标焦点发生变化时,触发。)
选择完成后,我们会看到下面出现了两条代码;这俩条代码其实是在声明一个函数。
将鼠标放置在这两行代码之间,我们写上执行语句:
Sheet1.Cells(1, 3) = Sheet1.Cells(1, 1) + Sheet1.Cells(1, 2)
其中:sheet1.cells(1,3)就是指第一行第三列的这个单元格;Sheet1.Cells(1, 1)就是指第一行第一列的这个单元格;Sheet1.Cells(1, 2)就是指第一行第二列的单元格。执行语句的意思是:将cells(1,1)和cells(1,2)的值相加,并赋值给cells(1,3)
注意的是:写语句的时候,输入法一定要是输入字母的模式。要不然你的语句会报错。
然后点击保存,回到Excel的原始界面。在cells(1,1)和cells(1,2)中输入两个数值。(楼主输入的是:125895和78954)
注意看:现在的cells(1,3)数值是空的。
在sheet1的工作表中,双击你的鼠标。你会发现,cells(1,3)的值变成了cells(1,1)和cells(1,2)的和。(204849=125895+78954)
总结:其实VBA主要是触发和指定单元格。
1.触发的原理其实很简单,大家可以选择不同的触发模式,试一下就知道是怎么回事了。
2.至于怎么指定到单元格,大家可以看看cells语句和Range语句。
补充说明: VBA不需要过于复杂的VB语句。你只需要知道VB怎么写怎加减乘除,怎么使用IF语句,就可以满足大部分的需求了。
最后希望大家能够驾驭VBA,顺便送大家一句话:
眼见为虚,耳听为虚,只有运行才是硬道理。
展开全部
"=" &
把上面这个删除掉。把=号文本化了,如果=的是未打引号的文本,就会出现#name? 而=的是数字就不会出现问题。
另外If .Column = 3 Then 的注释应该为C列。
你求助问题答不上去,只好在这里答了。
如果你只计算数值,Cells(.Row, 4).FormulaR1C1 = "=" & CStr(.Value)
这个就是正确的。
如果你要计算文本,就会产生#name?
它的数值运算结果是 =1+2
如果是文本,则为(如):=KKK ,这个会产生错误#name?,因为只有="KKK" 的方式才不会产生错误。
把上面这个删除掉。把=号文本化了,如果=的是未打引号的文本,就会出现#name? 而=的是数字就不会出现问题。
另外If .Column = 3 Then 的注释应该为C列。
你求助问题答不上去,只好在这里答了。
如果你只计算数值,Cells(.Row, 4).FormulaR1C1 = "=" & CStr(.Value)
这个就是正确的。
如果你要计算文本,就会产生#name?
它的数值运算结果是 =1+2
如果是文本,则为(如):=KKK ,这个会产生错误#name?,因为只有="KKK" 的方式才不会产生错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询