cherrycdh 发表于 2021-4-13 15:51

关于全民一起vba提高篇中的if函数语句

能进帖子的大神好,是这样的,我在学习全民一起vba中的逻辑函数时,有不明白的地方
因为我也是初学vba的,然后我希望在学习过程中能够理解透彻它所代表的意思,所以可能问的问题很小白,也很啰嗦,不好意思哈
是这样的,老师有一个教学视频中,有一段城市的数据,然后要实现的功能是隔城市涂色
原始数据是这样的,

实现功能是这样的

然后呢,老师教的时候给出的vba代码是这样的
中心的思想我能够理解,就是判断循环的那行是否与上一样是不同的,如果不同的就是true,然后再将它改成falsh,但是呢,我不明白,它的第一个tuse=flash是什么意思?然后它是如何定义的,中间的if tuse=true
我捋的就有点乱了
Sub 交替()
    Dim tuse As Boolean, i As Long
    tuse = False '一开始默认是不涂色的(这个默认tuse是false没有指定,这个是怎么出现的?)
    i = 4 '从第四行循环,不从3开始是因为2是首行,3肯定是和2不同的,所以i从4开始,这里我是看得懂的
    Do While Cells(i, 4) <> ""
      '这里开始判断是否涂色的判断
      If Cells(i, 2) <> Cells(i - 1, 2) Then '这里是判断4,2和3,2是不是不一样(这里我也看得懂,如果i是4,那就是判断单元格4,2和3,2是不是一样)如果是一样那就是true
            If tuse = True Then   
          '就是这里的tuse是true,这里的tuse是true是怎么出来的?又没有说cells(i,2)指的是tuse,它突然来了一句tuse=true那就是变成falsh我就搞不懂了,是不是它里面省略写东西了?
                tuse = False
                Else
                tuse = True
            End If
      End If
      If tuse = True Then
            Range(Cells(i, 2), Cells(i, 4)).Interior.Color = 15177845 'i,2到i,4单元格涂色,这里我也能懂
      End If
    i = i + 1
    Loop
End Sub

阿苏斯 发表于 2021-4-13 15:57

tuse 是变量,

阿苏斯 发表于 2021-4-13 16:02

tuse = False '一开始默认是不涂色的(这个默认tuse是false没有指定,这个是怎么出现的?)
翻译下大概就是 :
涂色 = 假    //假的意思就是不涂色

If tuse = True Then   
            '就是这里的tuse是true,这里的tuse是true是怎么出来的?又没有说cells(i,2)指的是tuse,它突然来了一句tuse=true那就是变成falsh我就搞不懂了,是不是它里面省略写东西了?

If tuse = True Then   意思大概就是:
如果 涂色 = 真则 怎么样 怎么样//真代表 给单元格涂色

阿苏斯 发表于 2021-4-13 16:03

tuse就是涂色的拼音 ;www;www

cherrycdh 发表于 2021-4-13 16:13

阿苏斯 发表于 2021-4-13 16:03
tuse就是涂色的拼音

这个tuse是我写的,老师写的是paint,{:1_907:}英文不好,而且我觉得这样我自己也清楚一点

wslans 发表于 2021-4-13 16:22

tuse只是一个布尔变量,表示最前面的城市有没有设置背景色,如果设置了,后面的置成FALSE,表示不要背景,如果是FALSE,表示前面就的没有背景色,再发现不同城市就需要设置背景色了

sxfxtf 发表于 2021-4-13 16:22

Sub 交替()
    Dim tuse As Boolean, i As Long
    tuse = False '先设个变量tuse为假, 假就是代表if条件不满足
    i = 4
    Do While Cells(i, 4) <> "" '当单元格第I行 第4列不为空进入死循环
      
      If Cells(i, 2) <> Cells(i - 1, 2) Then '判断单元格第二列的上一行和下一行不相等则进行判断
            If tuse = True Then '如果tuse为真 则把tuse改为假
            
                tuse = False
                Else '如果tuse为假,则把tuse改为真
                tuse = True
            End If
      End If
      
      If tuse = True Then '你不明白的在这一步, 如果上面tuse改为了真就把I行的第2和第4列底色改为 15177845的颜色值
            Range(Cells(i, 2), Cells(i, 4)).Interior.Color = 15177845
      End If
    i = i + 1 '变量自增
    Loop
End Sub


wslans 发表于 2021-4-13 16:22

只是用于记录前面城市是否已设置背景色

wslans 发表于 2021-4-13 16:24

变成不同的城市后,当前格就需要与前面的城市是否设置背景色反着来,所以之前是false现在需要变成true,之前是true,现在就要变成false

阿苏斯 发表于 2021-4-13 16:37

If Cells(i, 2) <> Cells(i - 1, 2) Then '城市由北京变成上海进入 if
            If tuse = True Then      上面已经定义 涂色= false 所以不进入 if进入到else
                        tuse = False
                Else                  程序调到这里 执行
                      tuse = True
            End If
End If

输出 涂色 =真所以 程序给上海 涂色了,




然后 到了 天津


If Cells(i, 2) <> Cells(i - 1, 2) Then '城市由上海变成天津进入循环
            If tuse = True Then      由于北京到上海 使涂色的值=真了,所以进入 这个if
                        tuse = False涂色 =假
                Else                  
                      tuse = True
            End If
End If
所以 天津没有涂色



页: [1] 2
查看完整版本: 关于全民一起vba提高篇中的if函数语句