Excel-VBA常用代码总结1

  • 格式:docx
  • 大小:86.25 KB
  • 文档页数:15

Excel VBA常用代码总结1

• 改变背景色

Range("A1").Interior.ColorIndex = xlNone

ColorIndex一览

• 改变文字颜色

Range("A1").Font.ColorIndex = 1

• 获取单元格

Cells(1, 2)

Range("H7")

• 获取范围

Range(Cells(2, 3), Cells(4, 5))

Range("a1:c3")

'用快捷记号引用单元格

Worksheets("Sheet1").[A1:B5]

• 选中某sheet

Set NewSheet = Sheets("sheet1")

NewSheet.Select

• 选中或激活某单元格

'“Range”对象的的Select方法可以选择一个或多个单元格,而Activate方法可以指定某一个单元格为活动单元格。

'下面的代码首先选择A1:E10区域,同时激活D4单元格:

Range("a1:e10").Select

Range("d4:e5").Activate

'而对于下面的代码:

Range("a1:e10").Select

Range("f11:g15").Activate

'由于区域A1:E10和F11:G15没有公共区域,将最终选择F11:G15,并激活F11单元格。

获得文档的路径和文件名

ActiveWorkbook.Path '路徑

'名稱

ActiveWorkbook.FullName '路徑+名稱

'或将ActiveWorkbook换成thisworkbook

• 隐藏文档

Application.Visible = False

• 禁止屏幕更新

Application.ScreenUpdating = False

• 禁止显示提示和警告消息

Application.DisplayAlerts = False

• 文件夹做成

strPath = "C:\temp\"

MkDir strPath

• 状态栏文字表示

Application.StatusBar = "计算中"

• 双击单元格内容变换

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As

Boolean)

If (Target.Cells.Row >= 5 And Target.Cells.Row <= 8) Then

If Target.Cells.Value = "●" Then

Target.Cells.Value = ""

Else

Target.Cells.Value = "●"

End If

Cancel = True

End If

End Sub

• 文件夹选择框方法1

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(0, "文件", 0, 0)

If Not objFolder Is Nothing

Then path= objFolder.self.Path & "\"

end if

Set objFolder = Nothing

Set objShell =

Nothing

• 文件夹选择框方法2(推荐)

Public Function ChooseFolder() As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFolderPicker)

With dlgOpen

.InitialFileName = ThisWorkbook.path & "\"

If .Show = -1 Then

ChooseFolder = .SelectedItems(1)

End If

End With

Set dlgOpen = Nothing

End Function

'使用方法例:

Dim path As String

path = ChooseFolder()

If path <> "" Then

MsgBox "open folder"

End If

• 文件选择框方法

Public Function ChooseOneFile(Optional TitleStr As String = "Please

choose a file", Optional TypesDec As String = "*.*", Optional Exten As

String = "*.*") As String

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker)

With dlgOpen

.Title = TitleStr

.Filters.Clear

.Filters.Add TypesDec, Exten

.AllowMultiSelect = False

.InitialFileName = ThisWorkbook.Path

If .Show = -1 Then

' .AllowMultiSelect = True

' For Each vrtSelectedItem In .SelectedItems

' MsgBox "Path name: " & vrtSelectedItem

' Next vrtSelectedItem

ChooseOneFile = .SelectedItems(1)

End If

End With

Set dlgOpen = Nothing

End Function

• 某列到关键字为止循环方法1(假设关键字是end)

Set CurrentCell = Range("A1")

Do While CurrentCell.Value <> "end"

……

Set CurrentCell = CurrentCell.Offset(1, 0)

Loop

• 某列到关键字为止循环方法2(假设关键字是空字符串)

i = StartRow

Do While Cells(i, 1) <> ""

……

i = i + 1

Loop

• "For Each...Next 循环(知道确切边界)

For Each c In Worksheets("Sheet1").Range("A1:D10").Cells

If Abs(c.Value) < 0.01 Then c.Value = 0

Next

• "For Each...Next 循环(不知道确切边界),在活动单元格周围的区域内循环

For Each c In ActiveCell.CurrentRegion.Cells

If Abs(c.Value) < 0.01 Then c.Value = 0

Next

• 某列有数据的最末行的行数的取得(中间不能有空行)

lonRow=1

Do While Trim(Cells(lonRow, 2).Value) <> ""

lonRow = lonRow + 1

Loop

lonRow11 = lonRow11 - 1

• A列有数据的最末行的行数的取得 另一种方法

Range("A65536").End(xlUp).Row

• 将文字复制到剪贴板

Dim MyData As DataObject

Set MyData = New DataObject

MyData.SetText Range("H7").Value

MyData.PutInClipboard

• 取得路径中的文件名

Private Function GetFileName(ByVal s As String)

Dim sname() As String

sname = Split(s, "\")

GetFileName = sname(UBound(sname))

End Function

• 取得路径中的路径名

Private Function GetPathName(ByVal s As String)

intFileNameStart = InStrRev(s, "\")

GetPathName = Mid(s, 1, intFileNameStart)

End Function

• 由模板sheet拷贝做成一个新的sheet

ThisWorkbook.Worksheets("template").Copy

After:=ThisWorkbook.Worksheets(Sheets.Count)

Set doc_s = ThisWorkbook.Worksheets(Sheets.Count)

doc_ = "newsheetname" & Format(Now, "yyyyMMddhhmmss")

• 选中当列的最后一个有内容的单元格(中间不能有空行)

'删除B3开始到B列最后一个有内容的单元格为止的所有内容

Range("B3").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.ClearContents

• 常量定义

Private Const StartRow As Integer = 3

判断sheet是否存在

Private Function IsWorksheet(ByVal strSeetName As String) As Boolean

On Error GoTo ErrHandle

Dim blnRet As Boolean

blnRet = IsNull(Worksheets(strSeetName))

IsWorksheet = True

Exit Function

ErrHandle:

IsWorksheet = False