VBA快速交叉分段标记字符颜色

ThisarticledemonstratesaVBAscriptforcoloringdataincolumnA,wherethenumberofrowsisvariable,withevery4charactersseparatedbycolor.Itincludescodeanalysisanddebuggingtechniques.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例需求:A列中有不确定行数的数据,现在需要将数据按照每4位一组间隔标记颜色,如下图所示。

在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim rngCell As Range
    Dim rngData As Range
    Dim i, res, intLen
    Set rngData = Range("A1").CurrentRegion
    rngData.Font.ColorIndex = 0
    For Each rngCell In rngData
        Debug.Print "==" & rngCell.Address & "=="
        Debug.Print "LenOfDigits", "StartPos", "LenRedChar"
        res = Len(Trim(rngCell)) Mod 8
        For i = Len(rngCell) - 8 To -3 Step -8
            If (i <= 0) And (res > 4) Then
                intLen = res - 4
            Else
                intLen = 4
            End If
            rngCell.Characters(i + 1, intLen).Font.Color = vbRed
            Debug.Print Len(rngCell), i + 1, intLen
        Next i
    Next rngCell
End Sub

【代码解析】
第11行代码获取A1单元格开始的数据区域。
第12行代码设置设置单元格字体颜色为默认黑色。
第13行代码循环变量数据单元格。
第14~15行代码输出标题行,便于大家理解代码的执行过程。
第16行代码使用Trim去掉单元格内容中的前导和尾随空格,Len获取字符长度,Mod为取余数运算符。
第17~25行代码循环标记字符颜色。
第18~22行代码根据不同情况为变量intLen赋值,其中变量intLen为设置颜色的字符长度。
第23行代码设置字符字体颜色为红色。
第24行代码输出单元格字符长度,起始位置和设置颜色的字符长度。

代码逻辑并不复杂,其核心是如何获取起始位置和设置颜色的字符长度,运行代码【立即窗口】中输入结果如下。大家可以在VBE使用“逐语句”执行功能单步调试来进一步理解代码的执行过程。

 ==$A$1==
 LenOfDigits   StartPos      LenRedChar
 ==$A$2==
 LenOfDigits   StartPos      LenRedChar
  5            -2             1 
 ==$A$3==
 LenOfDigits   StartPos      LenRedChar
  10            3             4 
 ==$A$4==
 LenOfDigits   StartPos      LenRedChar
  14            7             4 
  14           -1             2 
 ==$A$5==
 LenOfDigits   StartPos      LenRedChar
  18            11            4 
  18            3             4 
 ==$A$6==
 LenOfDigits   StartPos      LenRedChar
  21            14            4 
  21            6             4 
  21           -2             1 
 ==$A$7==
 LenOfDigits   StartPos      LenRedChar
  24            17            4 
  24            9             4 
  24            1             4 
 ==$A$8==
 LenOfDigits   StartPos      LenRedChar
  26            19            4 
  26            3             4 
  26            11            4 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值