精华内容
下载资源
问答
  • 原文地址: ...   代码注释有很多风格,纵多开源软件都...我们在编写代码注释时为了统一风格,经常使用copy-paste方法,然后再修改不同部分。为了更方便统一代码注释规范应 用,加快开发中编码速度,我

    原文地址:
    http://blog.csdn.net/leatinfy/archive/2010/03/14/5379095.aspx

     

         代码注释有很多风格,纵多开源软件都使用doxygen中几种注释风格的一种。在多个人协作开发一款软件或系统或者项目时,需要统一编码规范。代码的注释 也是编码规范的一部分。我们在编写代码注释时为了统一风格,经常使用copy-paste方法,然后再修改不同的部分。为了更方便统一代码注释规范的应 用,加快开发中编码的速度,我们在VS2005 IDE中使用代码注释插件,设定相应的快捷键,在使用时只需要按快捷键即可,效果就跟使用VS2005中自带的功能一样,比如在VS2005中选中代码按 C-K C-C即可注释掉选中的代码。

         我们使用VS2005中的宏来编写代码注释插件,其宏代码如下:

    1. Imports  System  
    2. Imports  EnvDTE  
    3. Imports  EnvDTE80  
    4. Imports  System.Diagnostics  
    5.   
    6. 'Code Comment v1.0   
    7. 'leatinfy <leatinfy@gmail.com>   
    8. Public   Module  CodeComment  
    9.  'C-M C-H(head of file)   
    10.  Sub  AddFileHeaderComment()  
    11.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    12.         Dim  selection  As  EnvDTE.TextSelection  
    13.         Dim  commText  As   String   
    14.         Dim  outTextDoc  As  TextDocument  
    15.         Dim  outText  As  EditPoint  
    16.   
    17.         selection = DTE.ActiveDocument.Selection  
    18.         commText = ""  + vbCrLf  
    19.   
    20.         outTextDoc = DTE.ActiveDocument.Object ( "TextDocument" )  
    21.         outText = outTextDoc.StartPoint.CreateEditPoint()  
    22.         outText.MoveToPoint(selection.TopPoint)  
    23.         selection.Text = ""   
    24.         outText.Insert(commText)  
    25.     End   If   
    26.  End   Sub   
    27.   
    28.  '   
    29.  'C-M C-C(code comment)   
    30.  Sub  AddCommentStyle1()  
    31.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    32.         Dim  selection  As  EnvDTE.TextSelection  
    33.         Dim  commText  As   String   
    34.         Dim  topline  As   Integer   
    35.   
    36.         selection = DTE.ActiveDocument.Selection  
    37.         topline = selection.TopLine  
    38.   
    39.         commText = ""   
    40.   
    41.         selection.Text = commText  
    42.         selection.MoveToLineAndOffset(topline + 1, 1)  
    43.         selection.EndOfLine()  
    44.     End   If   
    45. End   Sub   
    46.   
    47.  '   
    48.  'C-M C-A(above the code line)   
    49.  Sub  AddCommentStyle2()  
    50.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    51.         Dim  selection  As  EnvDTE.TextSelection  
    52.         Dim  commText  As   String   
    53.   
    54.         selection = DTE.ActiveDocument.Selection  
    55.         commText = ""   
    56.         selection.Text = commText  
    57.         selection.CharLeft(, 3)  
    58.     End   If   
    59.  End   Sub   
    60.    
    61.  '   
    62.  'C-M C-E (end of the code line)   
    63.  Sub  AddCommentStyle3()  
    64.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    65.         Dim  selection  As  EnvDTE.TextSelection  
    66.         Dim  commText  As   String   
    67.   
    68.         selection = DTE.ActiveDocument.Selection  
    69.         commText = ""   
    70.         selection.Text = commText  
    71.         selection.CharLeft(, 3)  
    72.     End   If   
    73.  End   Sub   
    74.    
    75.  '   
    76.  'C-M C-N(normal c style)   
    77.  Sub  AddCommentStyle4()  
    78.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    79.         Dim  selection  As  EnvDTE.TextSelection  
    80.         Dim  commText  As   String   
    81.   
    82.         selection = DTE.ActiveDocument.Selection  
    83.         commText = ""   
    84.         selection.Text = commText  
    85.         selection.CharLeft(, 3)  
    86.     End   If   
    87.  End   Sub   
    88.   
    89.  'C-M C-F(function comment)   
    90.  Sub  AddFunctionComment()  
    91.     Dim  selection  As  EnvDTE.TextSelection  
    92.     If  DTE.ActiveDocument.Type =  "Text"   Then   
    93.         selection = DTE.ActiveDocument.Selection  
    94.         Dim  functext  As   String   
    95.         Dim  funinfo  As  FuncInfo  
    96.         Dim  editpoint  As  EditPoint  
    97.         Dim  startLine  As   Integer   
    98.         Dim  endLine  As   Integer   
    99.         Dim  strTmp  As   String   
    100.         Dim  commentText  As   String   
    101.         Dim  col  As   Integer   
    102.         Dim  codefunc  As  CodeFunction  
    103.   
    104.   
    105.         codefunc = CType (selection.TopPoint.CodeElement(vsCMElement.vsCMElementFunction), CodeFunction)  
    106.         If  codefunc  Is   Nothing   Then   
    107.             Exit   Sub   
    108.         End   If   
    109.   
    110.         functext = String .Copy(selection.Text)  
    111.   
    112.         commentText = ""   
    113.   
    114.         col = selection.TopPoint.DisplayColumn  
    115.         selection.GotoLine(selection.TopLine)  
    116.         selection.NewLine()  
    117.         selection.LineUp(, 1)  
    118.         If  col > 1  Then   
    119.             selection.PadToColumn(col)  
    120.         Else   
    121.             selection.Text = GetFirstSpaceText(functext)  
    122.         End   If   
    123.         selection.Text = commentText  
    124.      End   If   
    125.  End   Sub   
    126.   
    127.  Public   Class  FuncInfo  
    128.     Public  FuncName  As   String   
    129.     Public  Args  As   New  Collections.ArrayList  
    130.     Public  hasReturn  As   Boolean   
    131.  End   Class   
    132.  Public   Structure  BracketCount  
    133.     Public  LCount  As   Integer   
    134.     Public  RCount  As   Integer   
    135.  End   Structure   
    136.   
    137.  Private   Function  GetFuncInfo( ByVal  funcstxt  As   String As  FuncInfo  
    138.     Dim  index  As   Integer   
    139.     Dim  funinfo  As   New  FuncInfo  
    140.     Dim  strTmp  As   String   
    141.     Dim  args  As   String ()  
    142.     index = funcstxt.IndexOf("(" )  
    143.     strTmp = funcstxt.Substring(0, index)  
    144.     funinfo.FuncName = GetVarPartFromEnd(GetLastWord(strTmp))  
    145.     funinfo.hasReturn = HasReturnValue(strTmp)  
    146.     If  index < 0  Then   
    147.         Return  funinfo  
    148.     End   If   
    149.     strTmp = funcstxt.Substring(index + 1)  
    150.     index = strTmp.IndexOf(")" )  
    151.     If  index < 0  Then   
    152.         Return  funinfo  
    153.     End   If   
    154.     strTmp = strTmp.Substring(0, index)  
    155.   
    156.     args = strTmp.Split("," .ToCharArray(), StringSplitOptions.RemoveEmptyEntries)  
    157.     Dim  i  As   Integer  = 0  
    158.     Dim  counter  As  BracketCount  
    159.     Dim  tmpcounter  As  BracketCount  
    160.     While  i < args.Length  
    161.         counter.LCount = 0  
    162.         counter.RCount = 0  
    163.         While  i < args.Length  
    164.             tmpcounter = GetBracketCount(args(i))  
    165.             counter.LCount = counter.LCount + tmpcounter.LCount  
    166.             counter.RCount = counter.RCount + tmpcounter.RCount  
    167.             If  counter.LCount = counter.RCount  Then   
    168.                 Exit   While   
    169.             Else   
    170.                 i = i + 1  
    171.             End   If   
    172.         End   While   
    173.         If  i < args.Length  And  counter.LCount = counter.RCount  Then   
    174.             funinfo.Args.Add(GetLastWord(args(i)))  
    175.         End   If   
    176.         i = i + 1  
    177.     End   While   
    178.   
    179.     Return  funinfo  
    180.  End   Function   
    181.   
    182.  Private   Function  GetVarPartFromEnd( ByVal  funcStr  As   String As   String   
    183.     Dim  strLen  As   Integer   
    184.     Dim  ch  As   Char   
    185.     strLen = funcStr.Length  
    186.     For  i  As   Integer  = strLen - 1  To  0  Step  -1  
    187.         ch = funcStr.Chars(i)  
    188.         If  (Asc(ch) >= 48  And  Asc(ch) <= 57)  Or  (Asc(ch) >= 65  And  Asc(ch) <= 90)  Or  (Asc(ch) >= 97  And  Asc(ch) <= 122)  Or  ch =  "_" Then   
    189.             Continue For   
    190.         Else   
    191.             Return  funcStr.Substring(i + 1)  
    192.         End   If   
    193.     Next   
    194.     Return  funcStr  
    195.  End   Function   
    196.   
    197.  Private   Function  GetLastWord( ByVal  str  As   String As   String   
    198.     Dim  strLen  As   Integer   
    199.     Dim  index  As   Integer   
    200.     Dim  strTmp  As   String   
    201.   
    202.     str = str.TrimEnd((" "  + vbTab + vbLf + vbCrLf).ToCharArray())  
    203.     strLen = str.Length  
    204.     For  i  As   Integer  = strLen - 1  To  0  Step  -1  
    205.         If  str.Chars(i) =  " "   Or  str.Chars(i) = vbTab  Or  str.Chars(i) = vbLf  Or  str.Chars(i) = vbCrLf  Then   
    206.             Return  str.Substring(i + 1)  
    207.         End   If   
    208.     Next   
    209.   
    210.     Return  str  
    211.  End   Function   
    212.   
    213.  Private   Function  GetBracketCount( ByVal  str  As   String As  BracketCount  
    214.     Dim  strLen  As   Integer   
    215.     Dim  counter  As  BracketCount  
    216.   
    217.     counter.LCount = 0  
    218.     counter.RCount = 0  
    219.     strLen = str.Length  
    220.   
    221.     For  i  As   Integer  = 0  To  strLen - 1  
    222.         If  str.Chars(i) =  "<" Then   
    223.             counter.LCount = counter.LCount + 1  
    224.         End   If   
    225.         If  str.Chars(i) =  ">" Then   
    226.             counter.RCount = counter.RCount + 1  
    227.         End   If   
    228.     Next   
    229.   
    230.     Return  counter  
    231.  End   Function   
    232.    
    233.  Private   Function  GetFirstTextPosition( ByVal  str  As   String ByVal  tabSize  As   Integer As   Integer   
    234.     Dim  strLen  As   Integer   
    235.     Dim  pos  As   Integer  = 0  
    236.     strLen = str.Length  
    237.     Dim  i  As   Integer  = 0  
    238.   
    239.     For  i = 0  To  strLen - 1  
    240.         If  str.Chars(i) =  " " Then   
    241.             pos = pos + 1  
    242.         ElseIf  str.Chars(i) = vbTab  Then   
    243.             pos = pos + tabSize  
    244.         Else   
    245.             Return  pos  
    246.         End   If   
    247.     Next  i  
    248.   
    249.     Return  pos  
    250.  End   Function   
    251.    
    252.  Private   Function  GetFirstSpaceText( ByVal  str  As   String As   String   
    253.     Dim  strLen  As   Integer   
    254.     Dim  pos  As   Integer  = 0  
    255.     strLen = str.Length  
    256.     Dim  i  As   Integer  = 0  
    257.   
    258.     For  i = 0  To  strLen - 1  
    259.         If  str.Chars(i) <>  " "   And  str.Chars(i) <> vbTab  Then   
    260.             Exit   For   
    261.     End   If   
    262.     Next  i  
    263.   
    264.     Return  str.Substring(0, i)  
    265.  End   Function   
    266.   
    267.  'check function has return value   
    268.  Private   Function  HasReturnValue( ByVal  str  As   String As   Boolean   
    269.     Dim  strs  As   String ()  
    270.   
    271.     strs = str.Split((" "  + vbTab + vbLf + vbCrLf).ToCharArray(), StringSplitOptions.RemoveEmptyEntries)  
    272.     Return   Not  Array.Exists(strs,  AddressOf  IsVoidKeyWords)  
    273.  End   Function   
    274.    
    275.  Private   Function  IsVoidKeyWords( ByVal  str  As   String As   Boolean   
    276.     If  str.ToLower() =  "void"   Then   
    277.         Return   True   
    278.     Else   
    279.         Return   False   
    280.     End   If   
    281.  End   Function   
    282. End   Module  
    这里我自己编写的宏代码,有四种代码注释风格,和一个文件注释、一个函数注释功能。其注释风格如:

         接下来我们简单说一下如何使用这个注释插件。在“工具->宏->宏IDE”先启动宏IDE,然后新建一个宏项目,就上面的宏代码copy进 去,接着就在VS2005中绑定快捷键,在“工具->选项->键盘”中选定相应的宏函数,然后分配快捷键。宏中的函数前面注释中的快捷键为推 荐的快捷键,自己完全可以跟根自身的喜好来设定。

        比如,我们选中函数getname,然后按C-M C-F(我绑定的是这两个键),然后生成函数上面部分的代码

    1.   
    2. int  getname( int  id)  
    3. {  
    4.     ...  
    5. }  

    注:GetFuncInfo GetVarPartFromEnd GetLastWord GetBracketCount HasReturnValue IsVoidKeyWords这几个函数为我自已通过分析字符串来分析函数的参数代码,在查阅文档时发现可以通过.Net的 CodeElement(vsCMElement.vsCMElementFunction)过获取函数的相应信息,就对生成函数注释的宏代码进行了修 改,这几个函数仅供大家参考,在AddFunctionComment中并没有调用。

    展开全文
  • VBA常用方法记录一二

    2019-07-10 16:10:58
    这里自定义目录标题欢迎使用Markdown编辑器新改变功能快捷键合理创建标题,有助于目录生成如何改变文本样式插入链接与图片如何插入一段漂亮代码片生成一个适合你列表创建一个表格设定内容居中、居左、...
    
    Option Explicit
    
    Function getAllFolderAndFiles(ByVal strPath As String, Optional ByRef r As Double = 1)
        Dim f As Object
        Dim fso As New FileSystemObject
        
        For Each f In fso.GetFolder(strPath).Files
            Sheet1.Cells(r, 1).Value = f.Path
            r = r + 1
        Next
        For Each f In fso.GetFolder(strPath).SubFolders
            getAllFolderAndFiles f.Path, r
        Next
    End Function
    
    Function ReadTxtFile(ByVal inPath As String)
        '2バイト文字の読み方
        'Dim fso As New FileSystemObject
        'MsgBox fso.OpenTextFile(inPath).ReadAll
        
        '漢字入れの読み方
        With CreateObject("ADODB.Stream")
            .Type = adTypeText
            .Charset = "UTF-8"
            .Open
            .LoadFromFile inPath
            MsgBox .ReadText
            .Flush
            .Close
        End With
    End Function
    
    Function WriteTxtFile(ByVal outPath As String)
    
        With CreateObject("ADODB.Stream")
            .Type = adTypeText
            .Charset = "UTF-8"
            .Open
            .WriteText "TESTあ"
            .SaveToFile outPath, adSaveCreateOverWrite
            .Flush
            .Close
        End With
        
       Utf8WithoutBomPt1 outPath, outPath
    End Function
    
    Function Utf8WithoutBomPt1(ByVal inPath As String, ByVal outPath As String)
        Dim adodbStream, outStream As Object
        
        Set adodbStream = CreateObject("ADODB.Stream")
        Set outStream = CreateObject("ADODB.Stream")
        With adodbStream
            .Type = adTypeBinary
            .Open
            .LoadFromFile inPath
            .Position = 3
            Dim byteData() As Byte
            byteData() = .Read
            .Close
        End With
        
        With outStream
            .Type = adTypeBinary
            .Open
            .Write = byteData()
            .Position = 3
            .SaveToFile outPath, adSaveCreateOverWrite
            .Close
        End With
        Set adodbStream = Nothing
        Set outStream = Nothing
    End Function
    
    Function Utf8WithoutBomPt2(ByVal inPath As String, ByVal outPath As String)
        Dim getFileNum As Integer
        Dim putFileNum As Integer
        Dim i As Integer
        getFileNum = 1
        putFileNum = 2
    
        Open inPath For Binary As #getFileNum
        Open outPath For Binary As #putFileNum
        
        Dim fileByte As Byte
        Seek #getFileNum, 4
        
        For i = 1 To LOF(getFileNum) - 3
            Get #getFileNum, , fileByte
            Put #putFileNum, , fileByte
        Next i
        
        Close #getFileNum
        Close #putFileNum
    End Function
    
    Function SelectFile()
    
        With Application.FileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = False 'Select file only one
            .Filters.Clear
            .Filters.Add "Excel Files", "*.xls;*.xlsx;*.xlsm"
            .Filters.Add "All Files", "*.*"
            If .Show = -1 Then
                MsgBox "Select file is:" & .SelectedItems(1), vbOKOnly + vbInformation, "Excel"
            End If
        End With
        
    End Function
    
    Function SelectFolder()
        Dim fso As Object
        Dim myFolder As Folder
        Dim msg As String
        
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then
                Set fso = CreateObject("Scripting.FileSystemObject") 'フォルダを選択する
                'フォルダを取得する
                'Set myFolder = fso.GetFolder(.InitialFileName) '2007以前
                Set myFolder = fso.GetFolder(.SelectedItems.Item(1))
                '確認メッセージ
                msg = MsgBox("選択したのパスは:" & myFolder & vbCrLf & "実行はよろしいでしょうか?", vbOKCancel, "パス確認")
                If msg = 2 Then Exit Function
                
                'Dim nFldName As String
                'フォルダ名
                'nFldName = myFolder.Path & "\再命名"
                
                '新しいフォルダを作成する
                'If fso.FolderExists(nFldName) = False Then MkDir nFldName
                'フォルダ中のファイルを新しいフォルダにコピーする
                'fso.CopyFile myFolder.Path & "\*.*", nFldName, True
            End If
            
        End With
        
        Set fso = Nothing
        '最終確認
        MsgBox "処理はすべて終わりました", vbOKOnly, "確認"
        
    End Function
    
    Function clearList(ByVal list As Collection)
    
        Dim i As Double
        For i = 1 To list.Count
            list.Remove CStr(i)
        Next
        
    End Function
    
    展开全文
  • VBA踩坑记录

    2021-01-08 09:21:07
    想到随时补充… 1.隐藏sheet 用selection会报错。 2.动态添加事件方法 参数需要sheet页ID,不能用sheet名定位,只能用组件数+1获取。 3.涉及增删sheet的时候,慎用activesheet。...考虑一种写注释的样式… 羽佳小白
  • Excel_VBA教程

    2014-09-22 11:36:34
    25.FILESYSTEMOBJEC的方法和属性 165 26.对象FILE的属性 168 27.文件夹对象属性 169 28.驱动器对象属性 169 29.使用WSH创建文本文件 170 30.使用WSH进行其它操作 172 31.运行其它应用程序 172 32.创建快捷方式 173 ...
  • 一个公用的方法,只需要传入各系统的连接字符串,与SHEET名 代码注释很详细 需注意的是,时间字符串 需要用Format(X, "yyyy-mm-dd HH:MM") 进行转换,否则会显示为数值 Private Sub GetData(strCn As String...

    因每隔一段时间,需要提供各系统的有效用户信息,于是写了简单的获取显示  记录一下

    先写一个公用的方法,只需要传入各系统的连接字符串,与SHEET名

    代码注释很详细

    需注意的是,时间字符串 需要用Format(X, "yyyy-mm-dd HH:MM") 进行转换,否则会显示为数值

    Private Sub GetData(strCn As String, shtname As String)
    
    Dim cn As Object    '定义数据链接对象 ,保存连接数据库信息
    
    Dim rs As Object    '定义记录集对象,保存数据表
    
    Set cn = CreateObject("ADODB.Connection")  '创建数据链接对象
    
    Set rs = CreateObject("ADODB.RecordSet")  '创建记录集对象,用于接收数据查询获得的结果集
    
    Dim strSQL As String '字符串变量
    
    
    strSQL = "select a.user_id,a.user_name,a.email_address,a.login_time,a.crtdt from user a where a.user_status in ('A','L')"    '设置SQL语句
    
    
    cn.Open strCn '打开连接
    
    rs.Open strSQL, cn '读取数据库中的数据
    
    
    Dim i As Integer, j As Integer, h As Integer, g As Integer, sht As Worksheet 'i,j,h为整数变量;sht 为excel工作表对象变量,指向某一工作表
    
    i = 2
    
    
    
    If Issheet(shtname) Then
      Set sht = ThisWorkbook.Worksheets(shtname)  '存在则获取对应sheet'
    Else
      Set sht = ThisWorkbook.Worksheets.Add(after:=Worksheets(Worksheets.Count)) '不存在则创建新的sheet'
        sht.name = shtname  '给新建的sheet命名'
    End If
    
    
    
    'sht.Range(sht.Cells(2, 1), sht.Cells(sht.UsedRange.Rows.Count, sht.UsedRange.Columns.Count)).ClearContents  '清除除第一行以外的数据
    
    sht.Cells.ClearContents  '清除sheet里的 所有数据
    
    
    For h = 2 To rs.Fields.Count + 1
    
        sht.Cells(1, h).Value = rs.Fields(h - 2).name '将字段写入sheet的第一行
    
    Next
    
    h = 1
    
    Dim str As String
    
    
    
    '循环读取数据并将数据显示到excel中
    
    Do While Not rs.EOF     '当数据指针未移到记录集末尾时,循环下列操作
    
        sht.Cells(i, 1).Value = h    '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
        
        For g = 2 To rs.Fields.Count + 1
          
         If IsDate(rs(g - 2)) = True Then
            sht.Cells(i, g).Value = Format(rs(g - 2), "yyyy-mm-dd HH:MM") '如果是时间格式 需要Format转换一下  否则会显示数值
         Else
            sht.Cells(i, g).Value = rs(g - 2) '将字段写入sheet的第一行
         End If
    
        Next
    
        rs.MoveNext                      '把指针移向下一条记录
    
        i = i + 1                        'i加1,准备把下一记录相关字段的值保存到工作表的下一行
        h = h + 1
    
    Loop                                 '循环
    
    rs.Close   '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数
    
    cn.Close
    End Sub

    还有公用的 获取单元格列标的字母  与  SHEET是否存在

    Function getColumnLetter(ByVal myCol As Integer) As String '获取单元格列标的字母
    Dim columnName As String
     Dim k As Integer
     k = (myCol - 1) \ 26
     Select Case k
     Case 0
     Case Else
     columnName = columnName & Chr(64 + k)
     End Select
     columnName = columnName & Chr(64 + ((myCol - 1) Mod 26) + 1)
     getColumnLetter = columnName
    End Function
    
    Function Issheet(ByVal name As String) As Boolean '判断sheet是否存在'
     Dim i, n As Integer, bool As Boolean
     bool = False
     n = ThisWorkbook.Sheets.Count
     For i = 1 To n
     If ThisWorkbook.Worksheets(i).name = name Then
        bool = True
     End If
     Next i
     
     Issheet = bool
    End Function

    最后,连接字符串格式

    str = "Provider = MSDAORA;Password=xxxx;User ID=xxxx;Data Source=xxx;Persist Security Info=True;" 

    展开全文
  • excel如何调用VBA代码

    千次阅读 2015-12-04 10:14:43
    看到excel中呈现了很多表结构,看到VBA可以编写代码自动生成表结构于是就心动了,幻想如果创表能够自动生成脚步就很棒了。每次看着excel中表字段...(该代码是用于调用之前的VBA代码所用,类似Java用到方法的
    看到excel中呈现了很多表的结构,看到VBA可以编写代码自动生成表结构于是就心动了,幻想如果创表能够自动生成脚步就很棒了。每次看着excel中的表字段,精度,注释。用VBA编写好标准化的代码,可以提高工作效率,发挥excel的开发功能。

    打开excel vba编程工具,在ThisWorkbook中添加如下代码:

    (该代码是用于调用之前写好的VBA代码所用,类似Java用到方法的定义)

     Private Sub Workbook_BeforeClose(Cancel As Boolean)
    '关闭工作簿前,删除新创建的工具条先
      Dim bar_name As String
      bar_name = "HRBSJ"
      Application.CommandBars(bar_name).Delete
      On Error GoTo Exception
      Exit Sub
    Exception:
    End Sub
    Private Sub Workbook_Open()
    '打开工作簿时创建工具条
      Dim bar_name As String
      Dim new_bar As Office.CommandBar
      
      bar_name = "HRBSJ"

      Set new_bar = Application.CommandBars.Add(bar_name)
      new_bar.Visible = True
      
      new_bar.Position = msoBarLeft
      
          
      With new_bar.Controls.Add(Type:=msoControlButton, before:=1)
        .BeginGroup = True
        .Caption = "生成建表脚本"
        .TooltipText = "生成建表脚本"
        .Style = msoButtonCaption
        .OnAction = "Create_TS_Table_Script"
      End With
      

      
      On Error GoTo Exception
      Exit Sub
    Exception:
    End Sub

    展开全文
  • 一个使用VBA写的小程序,可以直接打开word文件,把word文件中的注释直接导入到excel中,可以增加评审的效率。早年台湾的评估师告诉我们提高工作效率的方法,我在网上找了一些资料自己写的。
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    25.FILESYSTEMOBJEC的方法和属性 165 26.对象FILE的属性 168 27.文件夹对象属性 169 28.驱动器对象属性 169 29.使用WSH创建文本文件 170 30.使用WSH进行其它操作 172 31.运行其它应用程序 172 32.创建快捷方式 173 ...
  • Excel VBA程序设计.doc

    2009-07-06 22:16:12
    11两个层面运行宏的方法 40 12完善你的宏代码 41 13重新命名宏 43 14运行宏的其它方法 43 15使用键盘快捷键运行宏 43 16通过菜单运行宏 44 17通过工具栏按钮运行宏 46 18通过工作表里面的按钮运行宏 47 19保存宏 48 ...
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    11两个层面运行宏的方法 40 12完善你的宏代码 41 13重新命名宏 43 14运行宏的其它方法 43 15使用键盘快捷键运行宏 43 16通过菜单运行宏 44 17通过工具栏按钮运行宏 46 18通过工作表里面的按钮运行宏 47 19保存宏 48 ...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................
  • 一、简单演示 和 代码展示B1 这个单元格,数据源路径。第 2 行是表头,A 列获取文件名...二、新对象/方法的介绍1. 小下划线 _ 和单引号 '分别为代码分行连接符,和注释符。2. DIR (pathname)◆返回一个 String,...
  • 11两个层面运行宏的方法 31 12完善你的宏代码 32 13重新命名宏 34 14运行宏的其它方法 34 15使用键盘快捷键运行宏 34 16通过菜单运行宏 35 17通过工具栏按钮运行宏 37 18通过工作表里面的按钮运行宏 38 19保存宏 39 ...
  • 自动升级模块我做成了ftp服务器模式,在ftp上面放了一个ver.txt里面第一行版本号,第二行更新日期,第三行开始可以一些注释或者更新说明 当判断ver.txt里面版本与本地excelautoupgrade_main里面版本号不...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
    本书涵盖了使用VBA 扩展Excel 功能的方法、提示和思想。Excel 2007 还有一些绝秘的新技巧,John Walkenbach 将帮助您掌握它们。 本书的作者John Walkenbach 是享有国际美誉的“电子表格先生”。他在书中分享了自己...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
    本书涵盖了使用VBA 扩展Excel 功能的方法、提示和思想。Excel 2007 还有一些绝秘的新技巧,John Walkenbach 将帮助您掌握它们。 本书的作者John Walkenbach 是享有国际美誉的“电子表格先生”。他在书中分享了自己...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    第六节注释和赋值语句....................................................................................................................2 第七节书写规范...................................................
  • 四、ASP文件基本格式及新建方法

    千次阅读 2016-09-08 07:43:19
    ASP中注释写法与VBA一样,可以用“REM”和“'”,通常文件头注释出于美观选用“REM”,其它地方一般选用“'”。 3、变量命名规则  asp变量是不区分大小写的,但建议每个单词第一个字母大写,如:“s
  • 最近第一次用VSTO(Visual Studio Tools For Office),了一个自动生成word报告的小程序,感觉VSTO非常难用。主要是对office对象模型不熟悉,不理解很...后来总算是找到了一个相对快捷的方法,其实VBA和VSTO使用的...
  • Excel转JSON

    千次阅读 2017-01-08 10:13:09
    由于项目需要, 需要将特定Excel文件提取为JSON, 试了Office2013版本后...但是之前看过一点VBA, 所以才鼓足勇气vb脚本解决问题.下面代码由于工作原因, 不能有太多注释, Excel文件也无法提供, 仅以此留念我执着.S
  • 2.4.2 使用现有的方法 38 2.4.3 使用命名参数 38 2.4.4 将对象赋值给变量 39 2.5 使用集合 41 2.5.1 计算元素的数量 42 2.5.2 访问集合元素 42 2.5.3 对集合元素循环 43 2.6 定制窗体 44 2.6.1 编写...
  • 2.4.2 使用现有的方法 38 2.4.3 使用命名参数 38 2.4.4 将对象赋值给变量 39 2.5 使用集合 41 2.5.1 计算元素的数量 42 2.5.2 访问集合元素 42 2.5.3 对集合元素循环 43 2.6 定制窗体 44 2.6.1 编写定制的...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,替换次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现正文。 RGB 函数 返回表示 RGB 颜色值数...
  • vb Script参考文档

    2009-07-28 22:13:02
    Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,替换次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现正文。 RGB 函数 返回表示 RGB 颜色值数...
  • VBSCRIP5 -ASP用法详解

    2010-09-23 17:15:46
    Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,替换次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现正文。 RGB 函数 返回表示 RGB 颜色值数...
  • Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,替换次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现正文。 RGB 函数 返回表示 RGB 颜色值数...
  • VBScript 语言参考

    2008-10-07 21:30:05
    Rem 语句 包含程序中的注释。 Replace 函数 返回一个字符串,其中某个指定子串被另一个子串替换,替换次数也有规定。 Replace 方法 替换在正则表达式搜索中已发现正文。 RGB 函数 返回表示 RGB 颜色值数...
  • Excel终极伴侣1.287

    2008-10-24 16:41:04
    7、VB/VBA代码归纳与重写:对VB/VBA代码进行混淆,大大降低代码的可读性,是一种保护VB/VBA代码的很有效的方法。详细的注释说明和一目了然的名称将有助于设计阶段的调试和查错,但是代码一旦发布后,这些优点将会使...
  • Excel终极伴侣1.286

    2008-10-14 10:56:40
    7、VB/VBA代码归纳与重写:对VB/VBA代码进行混淆,大大降低代码的可读性,是一种保护VB/VBA代码的很有效的方法。详细的注释说明和一目了然的名称将有助于设计阶段的调试和查错,但是代码一旦发布后,这些优点将会使...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

vba写注释的方法