【excel vba】循环和判断

语法

判断

单条件

(If 位置;else位置;end if || select 名字.value ;名字is;名字else;end select)

Sub 判断1() '单条件判断
  If Range("a1").Value > 0 Then //对于输入的a 顺序进行判断 如果成立输出
     Range("b1") = "正数"//返回在表格b1中
  Else
     Range("b1") = "负数或0"//反之输出
  End If //结束判断
End Sub

等价于

Sub 判断1() '单条件判断
  Select Case Range("a1").Value
  Case Is > 0
     Range("b1") = "正数"
  Case Else
     Range("b1") = "负数或0"
  End Select
End Sub

区间判断

if 位置条件。。。else if 位置条件。。。end if;分号等价于then

Sub if区间判断()
If Range("a2") <= 1000 Then
  Range("b2") = 0.01
ElseIf Range("a2") <= 3000 Then
  Range("b2") = 0.03
ElseIf Range("a2") > 3000 Then
  Range("b2") = 0.05
End If
End Sub

select case位置.value;case 范to围;case is 大于xx;end select

Sub select区间判断()
 Select Case Range("a2").Value
 Case 0 To 1000
   Range("b2") = 0.01
 Case 1001 To 3000
   Range("b2") = 0.03
 Case Is > 3000
   Range("b2") = 0.05
 End Select
End Sub

循环语句

for 。。to 。。next。。用于数列有规律性

Sub t2()
Dim x As Integer//1、声明变量Dim x As 字符(Integer)为整数
 For x = 10000 To 2 Step -3//定义x的值初始到2的范围,step递增/递减函数 -3表示递减3
  Range("d" & x) = Range("b" & x) * Range("c" & x)//单元格dx表示d1000 = 单元格b1000*单元格c1000
 Next x//输出
End Sub步骤:

for 。。。each 。。。in 用于全局无规律

Sub s1()
 Dim rg As Range//声明rg对象
 For Each rg In Range("a1:b7,d5:e9")//选取单元格范围
   If rg = "" Then//如果是空空格
     rg = 0//填充
   End If//结束
  Next rg
End Sub

dowhile。。用于不知道循环多少次的时候


Sub s2()
 Dim x As Integer
 Do while x < 14
   x = x + 1
   If Cells(x + 1, 1) <> Cells(x, 1) + 1 Then
      Cells(x, 2) = "断点"
      Exit Do
   End If
 Loop 
End Sub

函数

普通计算

一、在单元格中输入公式顺序进行
目的: 将数量和单价相乘=全额
'1、用VBA在单元格中输入普通公式



     Sub t1()
       Range("d2") = "=b2*c2"//计算
     End Sub
     
     Sub t2()
      Dim x As Integer
      For i = 2 To 6//从i=2开始循环到6为止,for(int i = 2 ;i <= 6;i++)
       Cells(x, 4) = "=b" & x & "*c" & x//cells(赋值,列位置)b2*c2
      Next x//输出
     End Sub

在这里插入图片描述

习题

题目1:

在这里插入图片描述
录制宏,命名
1、选中cd
2、移动金额插入b列
3、工具栏数据筛选
4、添加按钮(只能调试一次不可以撤回)
5、调用宏
在这里插入图片描述

题目2

循环操作所有格式,填充背景颜色

1、操作第一遍格式录制宏
2、打开代码
3、循环语句
4、先定义一个变量类型
dim i as int..
for i = 1 to 50 //for(int i = 1;i <=50;i++)
复制录制宏格式
next 
代码
Sub gys()
Dim i As Integer ' 定义变量整数
For i = 1 To 50 '循环for int i =1;i < 50;
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    ActiveCell.Offset(3, 0).Range("A1").Select
Next i
End Sub

在这里插入图片描述

题目3

制作一个工资条,并还原

1、录制
2、插入模块复制核心代码(注意绝对引用和相对引用)
3、写循环语句fo to next

Sub gzb1()
Dim i As Integer
Rows("1:1").Select
For i = 1 To 10
    Selection.Copy
    ActiveCell.Offset(2, 0).Range("1:1").EntireRow.Select
    Selection.Insert Shift:=xlDown
Next
End Sub

在这里插入图片描述
用按钮时
在这里插入图片描述
在这里插入图片描述

题目4(优化3)

题目5

对于男生称呼先生,女生称呼女士,理工代号lg,文科代号wk,删除空数据

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值