关于VBA的一些编程总结

这几天在做一个数据处理,文件是EXCEL格式的,本来想用PATHON或C++来做,但时间关系,本来就没有想到要做成多复杂,只是简单的做必要的数据处理。因此,使用了VBA这个工具,在网上找了一些基本的资料,边学边做。以下是一些总结的问题,希望在网友后面用到作为一些参考。

  1. 改变单元格字体的COLOR和单元格底色

Workbooks(1).Sheets(“Sheet3”).Range(“1:65536”).Font.Color = RGB(0, 0, 0)
Workbooks(1).Sheets(“Sheet3”).Cells(TotalRowSize + j, 7).Font.Color = RGB(255, 0, 0)
rng.Offset(i, 0).Interior.Color = RGB(200, 200, 200)
可以是单元格CELL,也可以是RANG

  1. 清空表格内容
    Workbooks(1).Sheets(“Sheet3”).Range(“1:65536”).ClearContents
    Workbooks(1).Sheets(“Sheet3”).Range(“1:65536”).Font.Color = RGB(0, 0, 0)

  2. 得到最大的行数和列数
    WordMaxRows = ActiveSheet.UsedRange.Rows.Count
    WordMaxCols = ActiveSheet.UsedRange.Columns.Count

  3. 得到某列中最大的非空行号
    CurRowSize = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row - 1

  4. 产生一个一定范围内的随机数
    Application.WorksheetFunction.RandBetween(2, CurRowSize)

  5. 字符串比较
    If StrComp(arrFormatSub(j), Workbooks(3).Sheets(1).Cells(1, i).Value, vbTextCompare) = 0 Then

  6. 分割字符串,按特定的符号,我这里是以+号来的。、
    arrFormatSub = Split(FormatStr, “+”)

  7. 关于全局变量
    在表格顶部使用如下方式来定义
    Option Explicit
    Dim PlanName As String
    Dim CurRowSize As Long

  8. 产生一个数据化字符串,并补零输出,类似于0X00002这种
    TempStr = CStr(1000 + curRow - 9 + i)
    rng.Offset(i, 2).Value = MaterialCode & Application.WorksheetFunction.Text(TempStr, “000000”)

  9. 工作表的选择
    Workbooks(2).Sheets(1).Select
    这个选择非常费时间,原来是操作是在二个不同的表格之间切换来回,后面只选中一个,另一个使用绝对定位的方式来实现,速度快多了。

  10. 一个意外的问题

      If UnitName <> "" Then
           

            For j = 1 To CurRowSize
            
             Workbooks(1).Sheets("Sheet3").Cells(TotalRowSize + j, 1) = PlanName            '计划名
           


             TotalRowSize = TotalRowSize + 1

             Workbooks(1).Sheets("Sheet3").Cells(TotalRowSize + j, 1) = PlanName            '计划名
          
             TotalRowSize = TotalRowSize + 1

             Workbooks(1).Sheets("Sheet3").Cells(TotalRowSize + j, 1) = PlanName            '计划名
          
             'TotalRowSize = TotalRowSize + 1
             
            Next j
            TotalRowSize = TotalRowSize + CurRowSize

上面注释了一行,按照道理最后一行不加也可以,把它打开,但出来的结果是不对的,不连续,可能跟选择有关。没有深入这个问题

你可能感兴趣的:(c语言)