精华内容
下载资源
问答
  • excel vba excel vbaexcel vba

    2011-03-08 09:42:46
    不错的东西excel vbaexcel vbaexcel vbaexcel vba不错的东西不错的东西不错的东西不错的东西
  • VBA Excel Script.txt

    2020-09-01 14:39:08
    VBA Excel Script ,VBA操作EXCEL,读取写入单元格,设置单元格颜色,设置单元格字符串,
  • A library of Excel VBA functions and routines I use in projects
  • VBA EXCEL编程

    2009-02-26 15:41:59
    VBA EXCEL编程 函数等许多用法 VBA EXCEL编程 函数等许多用法
  • vba excel api

    2010-01-28 23:31:48
    vba excel api good sample!
  • .Net 调用VBA Excel

    2017-06-06 11:11:02
    .Net 调用VBA Excel宏,PPT 可运行,bin中有VBA 代码
  • VBA EXCEL 排座位
  • /20200202/d47148203e1bf42df4715fd55db6d4c7.zip
  • vba excel 字符替换

    2009-09-15 22:36:12
    vba excel 字符替换 学习资料
  • vba Excel 资料

    2014-09-17 16:27:16
    Excel vba 学习
  • VBAexcel贪吃蛇小游戏

    2011-09-30 11:02:21
    VBAexcel贪吃蛇小游戏 共有6个版本 刚学VBA 花了一天时间 愿与大家共享
  • 利用EXCEL vba和新浪财经数实时抓取股票行情数据,并根据设定条件实时监控。
  • 通用工资计算(VBA excel),各种任意工资列项,都可以使用。随意设定,计算简便,打印功能。
  • VBA Excel 自定义函数不能调用成功的问题的解决方法问题以及解决方案的列举(持续更新中) 问题以及解决方案的列举(持续更新中) 自定义函数是自动化各种Excel重复操作的重要函数,我们可以用它实现各种自己的奇葩...

    VBA Excel 自定义函数不能调用成功的问题的解决方法

    问题以及解决方案的列举(持续更新中)

    自定义函数是自动化各种Excel重复操作的重要函数,我们可以用它实现各种自己的奇葩需求。但是当我退出VBA代码编辑界面调用时,却发现Excel找不到我定义的函数,那么可能有以下很多种原因可以导致上述的问题:

    1. 在VBA中误写定义为Sub 子程序,而不是 Function 函数,导致Excel不能识别。
    2. 在当前Sheet或者工作簿下 写VBA,而不是创建一个新的模块编写VBA。(本人是这个错误)
    3. 在其他的工作簿下 写VBA,导致在当前excel文件下不识别。
    4. 函数名和Excel自带函数名重复导致冲突。
    5. 网传Office破解版不能调用自定义函数,但是我使用的就是破解版,也可以识别。因此仅做参考。
    Function Merge_single(x As Range, y As Range)                  'This function is to filter some infomations indicated and put them together
        Dim wb As Object
        Dim st As Object
        Dim xx, yy As Range
        Dim xstr, ystr As String
        Dim rr As Integer
        If x.rows.Count <> y.rows.Count Then
            MsgBox "The variables you enter don't have the same column"
        End If
        Call del_text(x)
        Call del_text(y)
        ystr = Cells(y.Row, y.Column).Value
        xstr = filter(x)
        Merge_single = ystr & xstr
        xstr = ""
        ystr = ""
    End Function
    

    当解决问题后,在Excel界面可以像正常函数一样使用你的自定义函数。如下图所示。在这里插入图片描述

    展开全文
  • VBA 工程加密解密器 各种excel 密码破解,你懂的,嘿嘿……
  • VBA excel.pdf

    2009-03-11 13:08:42
    excel 2000 VBA编程教程.语法同样适用于2003等后续版本.Have fun!
  • VBA Excel速查宝典

    2014-02-08 23:04:04
    vba查找函数,有助于查找vba函数
  • vba excel to xml

    2009-06-01 08:51:42
    excel表内容转换为xml格式文件示例
  • vba excel编程三日谈(1)

    万次阅读 多人点赞 2010-06-09 14:28:00
    最近由于要修改一个excel report,见识了vba的强大。 这个report是一个大牛3年前写的,每天只需打开该文件, 就会自动连接oracle的dev和uat数据库读取最新的市场数据, 生成6个透视图,并比较dev和uat的数据的异同。...

    最近由于要修改一个excel report,见识了vba的强大。 这个report是一个大牛3年前写的,每天只需打开该文件, 就会自动连接oracle的dev和uat数据库读取最新的市场数据, 生成6个透视图,并比较dev和uat的数据的异同。vba操作数据之方便,生成的report之复杂,深深的吸引了我, 于是乎觉得不学点vba真的对不起老本行。花了3天时间学习, 目前觉得基本可以满足大多数需求,即便是有不懂的地方, 也知道在哪里查资料,该怎么查资料。为了防止自己很快忘记, 于是有了vba excel编程3日谈, 内容涵盖对象模型, 基本语法,excel表格基本操作,事件,ADODB连接数据库读取数据, 生成透视图。本人没有学过vb,写出来的东西在过来人看来未免太简单, 但只求对新手有帮助。

    vba excel编程三日谈(1)

    vba excel编程三日谈(2)

    vba excel编程三日谈(3)  

    准备工作

    vba是一种寄宿语言,像javascript生存在浏览器中一样,vba生存在office应用程序中。所以请确保你安装了office,本人学习的时候采用的office2007, 版本差异会引起一些问题, 但是office2003和office2007的差异不是很大。

    新建一个excel文档test.xls, 按alt+F11进入vba编程界面。双击左面的thisWorkbook,在右边输入:

    Private Sub Workbook_Open()
        MsgBox "Hello, world"
    End Sub

    保存并退出excel,然后重新打开该excel,则会看到弹出的消息Hello,world。 如果遇到macro安全警告,请enable。这就是第一个vba程序,Workbook_Open是对事件open的响应函数(关于事件在后面会有更多介绍)。

    当然你可以把代码写在任何一个sheet里面,也可以就地运行,调试。双击sheet1,在右边输入:

    Sub test()
        MsgBox "Hello, world"
    End Sub

    然后把光标移到函数名test上,点击工具栏上的绿色的箭头即可运行测试该函数。

    我们还可以在excel的工作表上添加一个控件(比如按钮),通过点击控件来执行函数。把菜单切换到Developer标签,如下图点击Insert即可选择插入的控件(如果是office2003则在菜单试图->工具栏->控件工具箱)

    点击按钮,在工作表的任意位置画一个按钮,同时在选择框中点击你刚编写的函数test,保存。 此时点击按钮即可触发该函数。

    当然你还可以录制宏, 这也是学习vba的好方法。在这里不做介绍。

    OK, 至此,我们学会在怎么定义一个过程(函数), 然后怎么触发运行它(通过事件,通过vba运行调试,通过按钮),准备工作到此结束。

     

    vba excel对象模型

    类似javascript中的dom模型, windows编程中的组件对象模型, vba也有自己的对象模型. excel的模型中的对象有很多(自己可以google一下), 但是经常用到的无非这四五个:application -> workbooks -> worksheets -> range ->cells. application处于最顶上,表示正在运行的程序(Excel)本身. workbook工作薄, 即一个excel文件单元, 对应着一个xls文件. worksheet是工作表, 新建一个workbook里面默认包含了3个worksheet; range表示工作表中的一块区域, 比如Range("A1:D10")表示A1:D10之间的那块区域, 一个range包含多个Cell,一个cell即worksheet中的一个小格子. 新建一个文件1.xls,并在sheet1的A1单元格中随便输入内容, 下面的程序将更清楚的表明它们之间的关系. 继续在刚才的test.xls的sheet1的代码区中输入如下代码:

    当然每个对象都有很多属性和方法可以使用.如例:

    这么多方法和属性记不住怎么办? 没关系,有自动语法提示: 菜单->tools->options 勾选auto list members.

    关于对象模型就说这么多, 记不住或不了解的, 可通过录制宏, 自动代码提示, google等渠道获得.

     

    基础语法

    数据类型和定义变量

    vba的基础数据类型有byte boolean integer long single double currency decimal date...长度精度上有所差别.

    如下展示基本数据类型的定义和使用, 其中要注意的是Date类型的赋值比较特殊, 要用##包含起来, 常用类型还有更简单的定义方式:

    常用类型说明符
    % integer
    & long
    ! single
    # Double
    $ string
    @ currency

    如果定义的变量是对象类型, 比如WorkSheet, 则要用set来赋值.

    定义和使用数组:

    过程&函数

    通过sub subname(param1, param2 ...) ...... end sub 可定义过程, 也可定义function,function和sub的区别是function有返回值.其他都一样, 在这里就不讨论function了.

    一个过程可以调用其他过程.

    过程可以带参数, 传参数的方式有两种, 传值和传引用. 凡是有编程基础的人都应该明白这两种方式的区别.

    流程控制

    if语句:

    select case 语句:

    循环控制:

    最后说一下vba的with语法和语句换行. with语法是为了减轻程序输入负担, 在with范围类, 默认的当前对象就是with指定的对象, 如下程序 with指定了font, 则下面的.Name .FontStyle等都是指Range("A1").font的成员:

    vba程序的基本单元是行, 如果要换行, 需用符号"_"来处理:

    ok, 太累了,这篇就写到这儿.

    展开全文
  • vba excel 画折线图

    千次阅读 2018-08-08 10:45:52
    vbs:  Sub dttp() On Error Resume Next Dim rowend&amp;, arr, i&amp;, myShap As Shape, str As String, lastcol As Integer rowend = Range("a" &amp; Rows.Count).End(xlUp... ...

    vbs: 

    Sub dttp()
        On Error Resume Next
        
        Dim rowend&, arr, i&, myShap As Shape, str As String, lastcol As Integer
        
        rowend = Range("a" & Rows.Count).End(xlUp).Row
        
        Shapes("违约分布").Delete
        
        Set myShap = Shapes.AddChart
        myShap.Name = "违约分布"
        
        lastcol = ActiveSheet.UsedRange.Columns.Count
          
        Dim MyNumber
        MyNumber = Asc("A")
        
        MyNumber = MyNumber + lastcol - 1
        
        Dim MyChar
        MyChar = Chr(MyNumber)
        
        
        str = "B2 :" & MyChar
        
        With myShap.Chart
            .ChartType = xlLine
            .HasTitle = True
            .ChartArea.Height = ActiveSheet.UsedRange.Rows.Count * 2
            .ChartArea.Width = lastcol + 600
            .ChartTitle.Characters.Text = "违约分布"
            .SetSourceData Source:=Range(str & rowend), PlotBy:=xlRows
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "概" & Chr(10) & "率"
            .Axes(xlValue).AxisTitle.Orientation = xlHorizontal
              ' 更改图表2的水平类别轴的轴标签区域.
             .SeriesCollection(1).XValues = "=Sheet1!$A$1:$H$1"
            For i = 1 To ActiveSheet.UsedRange.Rows.Count
              With myShap.Chart
               .SeriesCollection(i).Name = ActiveSheet.Range("A" & i + 1)
              End With
            Next i
        
        End With
    
    End Sub

     

    展开全文
  • Vba Excel 到 word 实例

    千次阅读 2019-05-07 14:57:27
    Excel sheet 名字为数据源 、sheet2 Word 模板:名字:模板.docx 里面包含一个模板表格 程序流程 1、打开模板文档、复制模板表格到剪贴板、关闭模板文档 2、创建新的文档、粘贴 3、使用数据源修改新文档的第一个...
    •  准备

    Excel sheet 名字为 数据源 、sheet2

    Word 模板:名字:模板.docx    里面包含一个模板表格

    • 程序流程

    1、打开模板文档、复制模板表格到剪贴板、关闭模板文档

    2、创建新的文档、粘贴

    3、使用数据源修改新文档的第一个表格、复制粘贴

    4、删除第一个表格

    5、另存为word

     

    Public DataMaxRow
    
    
     Sub ToWord()
        模板路径 = ThisWorkbook.Path & "\" & "模板.docx"
        If Dir(模板路径, 16) = Empty Then
            Direrror = MsgBox("模板不存在!", vbDefaultButton1, "错误!")
            Exit Sub
        End If
        当前路径 = ThisWorkbook.Path
     
        Sheets("sheet2").Range("i11") = "正在打开Word主程序" '显示状态
     
        Set Word对象 = CreateObject("Word.Application")
     
        Sheets("sheet2").Range("i11") = "正在打开模板.docx" '显示状态
    
        With Word对象
            .Visible = False
            .Documents.Open 模板路径 '打开一个word文档
    
    
             Set 模板 = .ActiveDocument
             Set obj模板表格 = 模板.Tables(1) '这是个对象 可以使用table方法
             Let 模板表格内容 = obj模板表格 '这是个变量 let可以省略 表格内容指针
             
             Sheets("sheet2").Range("i11") = "正在新建文档" '显示状态
             
             Set newobj = .Documents.Add '新建一个word文档
        End With
        模板表格内容.Copy '将表格复制到剪贴板
        模板.Close '关闭模板
        Sheets("sheet2").Range("i11") = "正在生成word文档..." '显示状态
        With newobj
            .ActiveWindow.Selection.EndKey        '光标置于文件尾部
            .ActiveWindow.Selection.InsertBreak Type:=6 '换行
            .ActiveWindow.Selection.Paste '粘贴模板表格
            Set obj模板表格 = .Tables(1) '这是个对象 可以使用table方法
            Let 模板表格内容 = obj模板表格 '这是个变量 let可以省略 表格内容指针
        End With
        
        
        Sheets("sheet2").Range("i16") = 0
        Sheets("sheet2").Range("j16") = DataMaxRow
        For i = 2 To DataMaxRow '最后行号
            Sheets("sheet2").Range("k16") = i
    
            '填写表格数据 start
            
            obj模板表格.Cell(2, 2).Range = Sheets("数据源").Cells(i, 1)
            obj模板表格.Cell(3, 2).Range = Sheets("数据源").Cells(i, 2)
            obj模板表格.Cell(4, 2).Range = Sheets("数据源").Cells(i, 3)
            obj模板表格.Cell(5, 2).Range = Sheets("数据源").Cells(i, 4)
            obj模板表格.Cell(6, 2).Range = Sheets("数据源").Cells(i, 5)
            obj模板表格.Cell(7, 2).Range = Sheets("数据源").Cells(i, 6)
            obj模板表格.Cell(8, 2).Range = Sheets("数据源").Cells(i, 7)
            obj模板表格.Cell(9, 1).Range = Sheets("数据源").Cells(i, 8)
    
            '填写表格数据 end
                   
            模板表格内容.Copy
            newobj.ActiveWindow.Selection.EndKey '光标置于文件尾部
            newobj.ActiveWindow.Selection.InsertBreak Type:=6 '6换行 7是分页
            newobj.ActiveWindow.Selection.Paste '粘贴模板表格
            Sheets("sheet2").Range("i16") = i / DataMaxRow * 1#
            
        Next i
       obj模板表格.Delete '删除复制过来的模板表格
       
        '另存为
        newobj.SaveAs2 Filename:=ThisWorkbook.Path & "\" & "模板1.docx"
        newobj.Close
        Word对象.Quit
        Set Word对象 = Nothing
        hh = MsgBox("已输出到 Word 文件!", vbInformation, "提示:")
     End Sub
    
    Private Sub 导入N行到word_Click()
        DataMaxRow = Sheets("sheet2").Range("i9") + 1  '计算数据的行数 ActiveSheet
        OK_Cancel = MsgBox("是否输出 " & DataMaxRow & " 行数据到 Word 文件!", vbOKCancel, "提示:")
        If (OK_Cancel = vbOK) Then
            ToWord
        End If
    End Sub
    
    Private Sub 导入到word_Click()
        DataMaxRow = Sheets("数据源").[A65536].End(xlUp).Row '计算数据的行数 ActiveSheet
        OK_Cancel = MsgBox("是否输出 " & DataMaxRow & " 行数据到 Word 文件!", vbOKCancel, "提示:")
        If (OK_Cancel = vbOK) Then
            ToWord
        End If
    End Sub
    
    

     

    展开全文
  • 之前已经描述分别描述了Excel VBA的窗体、控件和Excel本身的对象(也就是数据的承载者)。本章主要描述Excle VBA中如何将控件和excel中的数据相关联。 一、如何关联已有的Excel文档和VBA 其实这个就是如何使用Vba...
  • 引言 本人本次实践的目标是数据查询。具体实现方式应该是: 使用窗体及其他控件做查询的条件的输入 使用excel作为查询结果的输出 从桌面上看应该是,...在VBA中也有,可以打开excel->开发工具 点开Visu...
  • vba excel 单元格格式设置

    千次阅读 2017-01-12 10:49:04
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)  Cells.Font.ColorIndex = xlAutomatic  Dim x As Range  For Each x In ActiveSheet.UsedRange  If x.Value = ActiveCell.Value An
  • 一个excel文件其实就是一个excel工作簿,所以只需要使用workbook的open()方法。 '使用workbook的open()方法,当打开excel时窗口就会马上执行 Private Sub Workbook_Open() UserForm1.Show End Sub '窗体的初始化 ...
  • VBA Excel曲线图批量生成

    千次阅读 2018-06-22 15:50:08
    根据大量数据批量生成折线图,以下代码为根据不同proj_name与region,绘制以时间为横坐标,size为纵坐标,不同种类数据的折线图。iRows = ActiveSheet.UsedRange.Rows.Count proj_name_first = "...
  • excel单元格和控件对应的value可以互相影响。意思就是你改一个另外一个就会跟着改 ControlTipText 指定当用户将鼠标指针放在控件上但未按下时所显示的文本           ...
  • vba excel自动生成javabean格式的txt

    热门讨论 2010-05-04 14:08:31
    小小工具:把excel中的字段,单击生成是自动生成标准javabean格式的txt文件,复制到javabean中就OK
  • Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Address = "$f$5" Then Image1.Picture = LoadPicture(ThisWorkbook.Path & "\照片\" & Trim(Target.Value) & ".jpg") ...
  • VBA Excel 插入图片(非引用方式)

    万次阅读 2017-05-03 16:32:52
    引用的方式插入图片ActiveSheet.Pictures.Insert(imgPath)这种方式插入的图片只是引用而已,当图片被删除、移动时,excel文件中的图片将会找不到资源位置。非引用方式插入图片worksheet.Shapes.AddPicture("C:\\GW...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,902
精华内容 12,760
关键字:

VBAexcel