Posts Tagged VBA

将文本转换为数据

好久没有用Excel VBA写程序了。最近对一些分析模型做更新,于是重新写。提取的数据比较dirty,得进行一些处理。比如有的数值,提取出来却成了文本格式。

image

在立即窗口中,在语句前面添加 “?”,可以立即知道该语句的结果。

引用excel中的函数方法:Application.WorksheetFunction.函数。但是,若该函数在VBA中有,则不要采用该方式引用。

下面是一个将文本转换为数字的程序。

Dim i As Integer
Dim j As Integer

Sub ForceString2Value()
For i = 2 To 6598
    For j = 13 To 16
        With Worksheets("Invest")

‘ determine whether there is character "”%” in cells
        If InStr(1, Cells(i, j), "%") Then
            Cells(i, j) = CDbl(Left(Cells(i, j), Len(Cells(i, j)) – 1)) / 100
        Else

‘ in some cells, those strings can’t be changed to value.
            On Error Resume Next

’ if the cell is string, then use CDbl to change string to value
            Cells(i, j) = CDbl(Cells(i, j))

        End If
        End With
    Next j
Next i
End Sub

,

1 Comment

将图片批量导入到PPT中

方式1:运用宏代码,如下:

Sub insert()
    Dim i As Integer
    For i = 1 To ActivePresentation.Slides.Count
        ActivePresentation.Slides .Select
        With ActiveWindow.Selection.SlideRange
            .FollowMasterBackground = msoFalse
            .Background.Fill.UserPicture "path" & i & ".jpg"
            End With
    Next

End Sub

方式2:插入–>图片–>新建相册.

, ,

No Comments

关于Excel VBA的程序说明

Excel vba的程序又根据有无执行对象分为过程程序和事件程序。

过程程序简单的说就是通过代码完成一个任务。它和事件程序的主要区别就是它没有明确的服务对象,但可以被其他程序所调用。过程程序又根据是否有返回值分为以下两种。

1. 子过程程序:运行后不能返回值。

2. 函数过程程序:运行后能够返回值。

自定义函数一般存放在添加的模块中,但也可以存放在指定对象的(如工作表对象)的代码窗口中。不同的是,在模块中的函数可以在任何一个程序中调用,而存放在对象代码窗口中的函数只能被本代码窗口内的程序所调用。如果要变下在工作表公式中使用的函数,就必须在添加的模块中编写。

事件程序是指当某一特定事件发生时才执行的程序。例如,当选取单元格时触发某个程序的运行。选取单元格的动作就是一个事件。使用事件程序的好处是极大增强了操作者与程序的互动性。

事件程序的添加和过程程序有所不同。事件程序有指定的对象,所以添加前要先选取该对象并打开该对象的代码窗口,然后在代码窗口的对象列表中选取该对象或该对象的子对象。并在过程列表中选取需要的事件。在代码窗口内会自动添加该程序的开始和结束语句。

,

No Comments