这几天在做一个数据处理,文件是EXCEL格式的,本来想用PATHON或C++来做,但时间关系,本来就没有想到要做成多复杂,只是简单的做必要的数据处理。因此,使用了VBA这个工具,在网上找了一些基本的资料,边学边做。以下是一些总结的问题,希望在网友后面用到作为一些参考。
- 改变单元格字体的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
-
清空表格内容
Workbooks(1).Sheets(“Sheet3”).Range(“1:65536”).ClearContents
Workbooks(1).Sheets(“Sheet3”).Range(“1:65536”).Font.Color = RGB(0, 0, 0) -
得到最大的行数和列数
WordMaxRows = ActiveSheet.UsedRange.Rows.Count
WordMaxCols = ActiveSheet.UsedRange.Columns.Count -
得到某列中最大的非空行号
CurRowSize = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row - 1 -
产生一个一定范围内的随机数
Application.WorksheetFunction.RandBetween(2, CurRowSize) -
字符串比较
If StrComp(arrFormatSub(j), Workbooks(3).Sheets(1).Cells(1, i).Value, vbTextCompare) = 0 Then -
分割字符串,按特定的符号,我这里是以+号来的。、
arrFormatSub = Split(FormatStr, “+”) -
关于全局变量
在表格顶部使用如下方式来定义
Option Explicit
Dim PlanName As String
Dim CurRowSize As Long -
产生一个数据化字符串,并补零输出,类似于0X00002这种
TempStr = CStr(1000 + curRow - 9 + i)
rng.Offset(i, 2).Value = MaterialCode & Application.WorksheetFunction.Text(TempStr, “000000”) -
工作表的选择
Workbooks(2).Sheets(1).Select
这个选择非常费时间,原来是操作是在二个不同的表格之间切换来回,后面只选中一个,另一个使用绝对定位的方式来实现,速度快多了。 -
一个意外的问题
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
上面注释了一行,按照道理最后一行不加也可以,把它打开,但出来的结果是不对的,不连续,可能跟选择有关。没有深入这个问题