Excel单元格内容循环切换

161 篇文章 16 订阅
77 篇文章 6 订阅

实例需求:工作表中按钮实现单元格A内容循环变化,备选内容为京东,唯品,阿里,例如当前单元格内容为京东,点击按钮则单元格内容变为唯品,如果单元格内容为阿里,点击按钮则单元格内容变为京东
在这里插入图片描述

这个需求并不难,实现逻辑也不复杂,常规思路就是多个If嵌套。

Sub Demo1()
    With Range("A1")
        If .Value = "阿里" Then
            .Value = "京东"
        ElseIf .Value = "京东" Then
            .Value = "唯品"
        ElseIf .Value = "唯品" Then
            .Value = "阿里"
        End If
    End With
End Sub

代码解析:
根据A1单元格的当前值,将相应的值赋值给单元格,第3~4行代码实现了循环切换,即由阿里变为京东

对于这种If嵌套代码可以使用Select Case预计实现,整体逻辑是相同的,代码会更加简洁一些。

Sub Demo2()
    With Range("A1")
        Select Case .Value
        Case "阿里"
            .Value = "京东"
        Case "京东"
            .Value = "唯品"
        Case "唯品"
            .Value = "阿里"
        End Select
    End With
End Sub 

无论是If和Select Case,整体代码行数都比较多,并且如果备选内容比较多的话,需要写很多行代码,并且如果内容新增内容,例如增加百度,就需求增加ElseIf或者Case语句,下面给出一个更简洁的实习方案,并且去扩展性更佳。

Sub Demo3()
    Dim sKey As String
    sKey = "京东 唯品 阿里 百度 京东"
    [A1] = Split(sKey)(Int(InStr(1, sKey, [A1]) / 3) + 1)
End Sub

代码解析:
第3行代码构建一个字符串,注意此处首尾是相同的,同为京东,这样才可以实现循环效果。
第4行代码中Split函数将sKey字符串拆分为一个数组,其下标下界为0。
Instr返回A1的内容在sKey中第一次出现的位置,例如A1单元格当前值分布为京东,唯品,阿里,百度时,则相应的函数返回值为1,4,7,10
上述返回值除以3,然后使用Int函数取整之后加1,得到的结果为1,2,3,4

增加备选内容只需要在百度之后插入就可以了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值