vba 不等于_8.EXCEL录制宏和VBA(上篇)

1.宏(很棒的功能)

宏用的好,能省很多很多很多很多很多很多的事情,提高自己的效率,我们还举那么最好理解的例子,如果公司有几百,几千个人需要做工资条,难道你不停的粘贴复制表头和数据么??宏的应用,能过非常快的解决问题,我找到了一个博主写的帖子,写的还挺详细,分享学习

使用录制宏制作工资条 - 沉默的伯爵 - 博客园​www.cnblogs.com
ade3a1aaae87e27fd60a226ea94d34fa.png

2.VBA

一、 什么是VBA:VBA是一种编程语言,它依托于Office软件,不能独立的运行,通过VBA可以实现各种Office软件操作的自动化。通俗易懂的来说就是在Excel中想实现什么功能,就可以用VBA语言编写一段程序去完成。

二、 VBA的代码的开始和结束

Sub 代码名称() 代码内容 End Sub

三、 定义变量

Dim num As Integer、Dim num As Integer,str As String、Dim num1, num2 As Integer、Dim num%

四、 单元格的基本操作

2. 获取单元格的值

  1. Sheets(表名/表的编号).range(“单元格名称”)
  2. Sheets(表名/表的编号).[单元格名称]
  3. Sheets(表名/表的编号).Cells(行号,列号)

3. 为单元格赋值

  1. Sheets(表名/表的编号).range(“单元格名称”).value = 值
  2. Sheets(表名/表的编号).[单元格名称] .value = 值
  3. Sheets(表名/表的编号).Cells(行号,列号) .value = 值

五.案例题

  • 打印100-999所有的水仙花数,所谓水仙花数就是指三位数,如果每一位上面的数值的立方的和等于这个数本身,那么这个数就是水仙花数
sub sxh 
dim g,s,b,num,sum
for num=100 to 999 step 1
   g=num mod 10
   s=VBA.INT(num/10) mod 10
   b=VBA.INT(num/100) mod 10
   sum=g*g*g+s*s*s+b*b*b
   if sum=num then
         msgbox(num)
   end if
next
end sub
  • 判断1900-2000年的是否为闰年,并且给单元格赋值
sub runnian
dim i,j
j=1
   for i=1900 to 2000
       if i mod 4=0 and i mod 100 <>0 or i mod 400=0 then
           sheets(1).cells(j,1).value=i
           j=j+1
       end if
  next
end sub
  • 打印九九乘法表
sub jjcfb
for i=1 to 9 
    for j=1 to 9
        if j<=i then
            cells(i,j)=j & "*" & i & "=" & j*i
        end if
    next
next
end sub
  • 打印1-1000内的所有完数,完数就是除了它本身的所有约数的和=这个数,那么就是完数
sub wanshu
dim i,j,sum
   for i=2 to 1000 
       sum=0
       for j=1 to i-1
            if i mod j=0 then
                 sum=sum+j
             end if
        next
       if sum=i then
           msgbox(i)
       end if
    next
end sub
  • 求两个数的最小公倍数、最大公约数( 9 和 24)
  • 思路:先找这两个数的谁是最大值和谁是最小值,找到大小关系后,如果大的那个值直接能够整除小的那个值,那么,这个大的值就是最小公倍数,如果除不尽,那么让这个大的值递增,每次都加1,一直找到那个能整除这两个数的值,那么这个数就是最小公倍数,最大公约数和这个类似,不同的就是找最小值,对小的值递减。
dim num1,num2,max,min
//判断两个值的大小关系
if num1>num2 then 
    max=num1
else 
    max=num2
end if

if num1<num2 then
    min=num1
else
    min=num2
end if

//求最小公倍数
do while true    //当不知道到底循环多少次时,这时候用do while会比较方便
    if max mod num1=0 and max mod num2=0 then
        msgbox(max)
        exit do   //得到结果,退出循环
    else
       max=max+1
    end if
loop

//求最大公约数
do while true    
    if num1 mod min=0 and num2 mod min=0 then
        msgbox(min)
        exit do   //退出循环
    else
       min=min-1
    end if
loop
  • 结果:最小公倍数是72,最大公约数是3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值