全面控制 Excel
首先创建 Excel 对象,使用ComObj:
Dim ExcelID as Excel.Application
Set ExcelID as new Excel.Application
1) 显示当前窗口:
ExcelID.Visible := True;
2) 更改 Excel 标题栏:
ExcelID.Caption := '应用程序调用 Microsoft Excel';
3) 添加新工作簿:
ExcelID.WorkBooks.Add;
4) 打开已存在的工作簿:
ExcelID.WorkBooks.Open( 'C:\Excel\Demo.xls' );
5) 设置第2个工作表为活动工作表:
ExcelID.WorkSheets[2].Activate;
或 ExcelID.WorkSheets[ 'Sheet2' ].Activate;
6) 给单元格赋值:
ExcelID.Cells[1,4].Value := '第一行第四列';
7) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;
8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
9) 在第8行之前插入分页符:
ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;
10) 在第8列之前删除分页符:
ExcelID.ActiveSheet.Columns[4].PageBreak := 0;
11) 指定边框线宽度:
ExcelID.ActiveSheet.Range[ 'B34' ].Borders[2].Weight := 3 ......
Public Function IsValidIPAddress(ByVal strIPAddress As String) As Boolean
On Error GoTo Handler
Dim varAddress As Variant, n As Long, lCount As Long
varAddress = Split(strIPAddress, ".", , vbTextCompare)
If IsArray(varAddress) Then
For n = LBound(varAddress) To UBound(varAddress)
lCount = lCount + 1
varAddress(n) = CByte(varAddress(n))
Next
IsValidIPAddress = (lCount = 4)
Else
IsValidIPAddress = False
End If
Handler:
End Function ......
做毕业论文的时候遇到的一个问题,请教豆瓣上的网友才有了答案。谢谢这位叫“异彩”的朋友。拿出来与大家分享。
用VB做图像处理软件的毕业论文,遇到一个问题。加载一幅图片,用多个滤镜分别处理,想一步一步UNDO到最原始的图像,多次UNDO怎么实现?
参考方案:
如果想做到多次UNDO的话, 无疑是需要记录操作的每次步骤. 具体有两种形式:
1, 在程序内存中存贮:
在程序中建立栈(不知道你学过没学过栈, 如果没有的话可直接理解为数组), 栈满足了后进先出(LIFO)的的规则.
在每次进行对图像的操作时, 都将上一幅图像备份(注意是深层备份, 如果是浅表引用的话是起不到效果的)到到这个栈中. 这样, 当执行UNDO时, 就可以从栈里面提取一个上一次保存的图像, 替代当前图像(并删除这个备份), 知道这个栈为空. 实现了多次UNDO.
这种方法的特点是处理数度比较快, 但是也非常消耗内存.
2. 在文件中存储:
同样是备份每个操作前的图像,但这次是存储到硬盘上, 这需要你以一定的文件名规范(xxx_temp_1.jpg, xxx_temp_2.jpg依次等等)去防止重名的情况. 同样在UNDO的时候, 去加载上一个编号的文件 ......
·错误类型
·编程员的错误(比如分母不能是0,参数个数或数据类型不对应)
·环境方面的错误(比如文件太大,磁盘放不下)
·时间上的错误(比如视图给尚未完成加载的窗体设置焦点)
·创建错误处理程序
·请求时编译
·后台编译
·捕获错误
·最好在代码中放入一个on error语句
·当出现错误时,使用on error goto,转移到别的代码上去执行
·使用on error resume next语句,不中断代码的执行,也不转移到别的代码上去执行,而是忽略该错误(最简单也最危险) ......
·定义完善的变量具有明确规定的数据类型和作用域
·要正确使用变量,必须使用表义性强的变量名来说明这些变量,并且必须为它们赋予焦点
·编程原则
·定义有焦点的变量(服务于一个定义明确的目的)
·为变量赋予表义性强的名字
·淘汰故意缩短的变量名
·避免给变量命名为temp
·在变量名中混合使用大小写
·只对常用变量名和长变量名进行缩写
·使用统一的量词
·用精心选择的数据类型说明变量
·只有在绝对必要时才使用variant数据类型
·如果可能,每行只说明一个变量
·尽量缩小变量的作用域
......
·匈牙利标记法
·使用3字符前缀来表示数据类型和控件类型
·3个字符可以实现充分多变性,并使前缀合乎逻辑和直观
·表示变量的作用域
·可以并且应该使用前缀来表示变量的作用域 ......