精华内容
下载资源
问答
  • VB快捷键、终止符和加速器检查宏,☆使用方法: - 将解压后的文件复制到 Passolo 系统文件夹中定义的 Macros 文件夹中; - 自动修改宏:打开 Passolo 的工具 -> 宏对话框,将它设置为系统宏并单击主窗口 右下角的...
  • 在标记处理窗口保存勾选标记后请不要改动该文件夹的位置、文件夹里的文件,不然下次读取的时候会出现错误设置里的按键模式,直接用鼠标点击文本框,然后用键盘按下按键即可设置成功,代码模式需要查看代码(图片)...
  • VB 6.0 OpenPlayer Flash播放器源代码,最后一次更新修改了SimplePlayer 在运行时没有选取择文件就退出 出现非法操作的Bug,添加了[屏蔽快捷键的功能],主要是为一些游戏而设的,在播放窗口的右键[控制]->[屏蔽...
  • escape" '处理alt+F11和alt+F8快捷键,F11打开VB编辑器,F8打开窗口时,调用StartUp模块的escape过程 Application.OnKey "%{F8}", "StartUp.xls!escape" End Sub Sub cop() On Error Resume Next '如果当前激活的...
  • VBE的窗口组成

    2018-05-07 22:36:35
    窗口中主要包括菜单栏、工具栏、工程资源管理器、代码窗口、属性窗口、立即窗口、监视窗口等。这些窗口模块可以通过视图菜单中的相应命令进行隐藏和显示。以下是对VBE窗口主要组成模块的简单介绍。1、菜单栏是VB...

    VBE就是Excel提供的专门用于编辑和调试VBA程序的编辑器。

    打开Excel应用程序,在“开发工具”选项卡下点击“Visual Basic”按钮或者直接按下快捷键Alt+F11即可打开VBE窗口。

    窗口中主要包括菜单栏、工具栏、工程资源管理器、代码窗口、属性窗口、立即窗口、监视窗口等。这些窗口模块可以通过视图菜单中的相应命令进行隐藏和显示。以下是对VBE窗口主要组成模块的简单介绍。

    1、菜单栏是VBE窗口的重要组成部分,包括文件、编辑、视图、插入、格式、调试、运行、工具、外接程序、窗口和帮助等共11个菜单项,使用这些菜单项可以完成编辑器几乎所有的功能。

    2、工具栏提供了常用的命令按钮,能够帮助我们更加高效便捷的对程序进行编辑、调试和管理。除默认显示的常用按钮外,我们还可以通过选择菜单中的“视图”“工具栏”,对编辑、调试等工具栏进行显示。

    3、工程资源管理器中包含了当前Excel应用程序中所有的VBA工程。每一个VBA工程对应着一个打开的Excel文件(即一个工作簿)。每个VBA工程目录下又包括了其对应工作簿中Excel对象、用户窗体、模块、类模块等资源。Excel对象主要是指工作簿以及工作簿中的工作簿对象。

    4、属性窗口列出了工程资源管理器中所选对象的所有属性以及属性的值。用户可以对属性的值进行查询和修改。

    5、代码窗口是VBE中不可缺少也是最常用的窗口。当用户在工程资源管理器中双击某个对象时,其对应的代码窗口会自动打开,用户可以在其中编辑和调试代码。工程资源管理器中的每一个对象都对应着一个代码窗口。当多个代码窗口同时打开时,只有一个处于活动状态。

    6、立即窗口主要功能有两个:执行单句代码;显示使用语句Debug.Print输出的结果。

    7、监视器窗口用于观察代码调试时在中断模式下对象以及变量的变化。

    展开全文
  • 关于 有这样一个场景,有一次,公司一个同事说,...1.打开vb宏编辑窗口,可使用快捷键Alt+F11打开,然后粘贴下面程序。下面的代码可以实现,在你选择的区域,运行宏,则该区域上,凡是换行符的位置都会追加上"\\"...

    关于

    有这样一个场景,有一次,公司一个同事说,excel表格中,想在每行换行的地方追加"\\"符号,以便该excel表格在导入jira系统的时候,该符号会被系统识别为换行符,方便阅读。于是乎有了下面的研究成果。

    完整的vb宏程序

    1.打开vb宏编辑窗口,可使用快捷键Alt+F11打开,然后粘贴下面程序。下面的代码可以实现,在你选择的区域,运行宏,则该区域上,凡是换行符的位置都会追加上"\\"符号。

    Sub AppendToSpritOnEnterRight()
    Dim c As Range
    Dim StaR As String
    Dim posStr As String
    Dim i As Long
    Dim resultStr, cacheStr As String
    Dim lastI As Long
    
    For Each c In Selection
        StaR = c.Value
        
        posStr = ""
        cacheStr = ""
        resultStr = ""
        lastI = 0
        
        For i = 1 To Len(StaR)
            posStr = Mid(StaR, i, 1)
            If posStr = Chr(10) Then '拼接字符串\\
                cacheStr = Mid(StaR, lastI + 1, i - 1 - lastI) & "\\" & Chr(10)
                resultStr = resultStr + cacheStr
                lastI = i
                //MsgBox resultStr
            End If
        Next i
        
        cacheStr = Mid(StaR, lastI + 1, Len(StaR) - lastI)
        resultStr = resultStr + cacheStr
        
        c.Value = resultStr
    Next
    
    End Sub
    复制代码

    2.补充几点 常用快捷键: Alt+Entry:换行 Alt+F11:打开程序窗口 F5:打开运行宏窗口

    函数: Mid(String,start[,Length]) String - 必需的参数。输入从中返回指定数量的字符的字符串。 Start - 必需的参数。 一个整数,它指定了字符串的起始位置。 Length - 必需的参数。 一个整数,指定要返回的字符数。 注意:Start需要从1开始。

     

    展开全文
  • VB网络编程实例

    千次下载 热门讨论 2007-05-29 15:46:04
    ◆ 57.htm 如何使用MSCOMM32.OCX发送大于80H的字符,可否给个示例程序 ◆ 58.htm 如何通过VB获取网卡地址 ◆ 59.htm 如何用VB打开默认器或默认发信程序? ◆ 60.htm 如何用Visual Basic编写...
  • mid 窗口实现的编辑器,并能防止打开多个实例(32KB) 37,f020.ZIP 在VB中调用HELP文件并实现Winhelp的关键字、主题等功能(16KB) 38,f019.ZIP 如何在VB中分割一个文件并组装恢复它(18KB) 39,f018.ZIP...
  • Cool(32KB) 617,o039_72.zip 鼠标计程器(23KB) 618,o038_love.zip 情书生成器源代码(161KB) 619,o037_shellex5.zip 能打开默认的文件夹和默认的网站(7KB) 620,o035_shchangenotify.zip 未...
  • Cool(32KB) 617,o039_72.zip 鼠标计程器(23KB) 618,o038_love.zip 情书生成器源代码(161KB) 619,o037_shellex5.zip 能打开默认的文件夹和默认的网站(7KB) 620,o035_shchangenotify.zip 未...
  • Cool(32KB) 617,o039_72.zip 鼠标计程器(23KB) 618,o038_love.zip 情书生成器源代码(161KB) 619,o037_shellex5.zip 能打开默认的文件夹和默认的网站(7KB) 620,o035_shchangenotify.zip 未...
  • Cool(32KB) 617,o039_72.zip 鼠标计程器(23KB) 618,o038_love.zip 情书生成器源代码(161KB) 619,o037_shellex5.zip 能打开默认的文件夹和默认的网站(7KB) 620,o035_shchangenotify.zip 未...
  • Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...
  • 首先说以下.xlsm文件和.xlsx文件的区别...打开.xlsm文件后在当前Sheet的名字上右击,选“View Code”(或者直接快捷键Alt+F11打开VB编辑窗口),出现下图: 图中红圈1表示当前工作簿的第一个工作表,系统命名为Sh...

    首先说一下.xlsm文件和.xlsx文件的区别:

           .xlsx文件只能存储数据,不能存储对数据进行处理的VB代码,而.xlsm文件既可以存储数据,又可以存储代码。

    新建一个.xlsm文件(打开.xlsx源数据文件并另存为.xlsm也可以),输入数据源(源数据和VB代码可以从以下链接下载):

                        原始数据以及 VBA 代码

    打开.xlsm文件后在当前Sheet的名字上右击,选“View Code”(或者直接快捷键Alt+F11打开VB编辑窗口),出现下图:

    图中红圈1表示当前工作簿的第一个工作表,系统命名为Sheet,我们重命名为RAW_DATA。写VB代码的时候通过这两个名称都可以引用到相应工作表,不过代码稍微会有一点不一样,我的代码使用的是系统命名,即Sheet1。

    双击图中的Sheet1,Sheet2,Sheet3以及红圈2中的Module1都会出现一个代码编辑区域,我的代码是写在Module1中的。(个人猜想在Sheet1中写的代码只能控制Sheet1中的对象,当要调用其他工资表数据时可能会有约束;而Module1是对整个工作簿的对象都有控制权,因为我的代码不是太复杂,但每个工资表都要用到,为了方便,我的代码就写在了Module1中)

    图中红圈3中三个按钮分别是运行,暂停,停止的作用,当代码写完后按绿色三角形运行,Debug时按蓝色方框结束Debug模式。

    接下来就没甚好说的了,Let me show you my code...

    (VB代码的注释用英文单引号“'”开始,而且只能单行注释。View-Toolbars-Edit工具栏里有一个注释代码块的按钮,很方便)

    以下代码段是针对代码的功能进行注释的。相对小白的来说,首先要理解每行代码的意思才能理解整个程序。(其实是为了防止我自己健忘)

    ' 由'开始的行是注释,直到本行结束
    ' Range()	--用于指定某一个或者某一些单元格区域
    ' Rows()	--指定某一行或者多行
    ' Columns()	--指定某一列或者多列
    
    Sub MyCode()
        
        Sheet2.UsedRange.ClearContents      	' 删除Sheet2工作表的所有单元格内容
        
        If Sheet3.ChartObjects.Count > 0 Then   	' 删除Sheet3工作表的所有图表。当对一个没有图表的工作表进行删除操作时会报错,
            Sheet3.ChartObjects.Delete          	' 所有要先进行判断,如果图表数大于0才执行删除操作
        End If
        
        Sheet1.Columns(3).Copy Destination:=Sheet2.Columns(1)   	' 将Sheet1第3列的数据拷贝到Sheet2的第一列
        Sheet1.Columns(4).Copy Destination:=Sheet2.Columns(3)
        Sheet1.Columns(5).Copy Destination:=Sheet2.Columns(6)
        Sheet1.Columns(6).Copy Destination:=Sheet2.Columns(4)
        
        Sheet2.Rows(1).Delete					' 删除Sheet2的第一行
        Sheet2.Range("A1") = "       TIME       "			' 设置Sheet2的A1单元格内容,注意这里有多余的空格
        Sheet2.Range("B1") = " Delta time(min) "
        Sheet2.Range("C1") = " Temp setting(deg) "
        Sheet2.Range("D1") = " Temp test(deg) "
        Sheet2.Range("E1") = " PCB Output(V) "
        Sheet2.Range("F1") = " MCU Output(12bit DAC) "
        Sheet2.Range("A1:F1").Font.Bold = True			' 把Sheet2的A1:F1区域字体加粗
        Sheet2.Range("A1:F1").Columns.AutoFit			
    	' 设置Sheet2的A到F列根据其第一行的内容而自动调节单元格宽度,上面设置内容时多余的空格是为了占位,使整列数据都可以完整显示
        'Sheet2.Columns("A:F").Select          			' 选择Sheet2的A到F列
        'Selection.HorizontalAlignment = Excel.xlCenter		' 对选择的区域设置为居中对齐
        Sheet2.Columns("A:F").HorizontalAlignment = Excel.xlCenter  ' 这一行和上面两行的结果一样,可相互替换
        'Sheet2.Columns("E").Select					' 选择Sheet2的E列
        'Selection.NumberFormatLocal = "0.00"			' 对选择的单元格区域进行格式化。0.00表示数字保留两位小数,0.00%表示以百分制表示。
        Sheet2.Columns("E").NumberFormatLocal = "0.00"    		' 这一行和上面两行的结果一样,可相互替换
        Sheet2.Columns("B").NumberFormatLocal = "0"			' 设置Sheet2的B列数学不显示小数部分
        
        countRows = Sheet2.UsedRange.Rows.Count            		' 计算Sheet2工作表所有数据的总行数
        
        Sheet2.Range("E2").Formula = "=IF(F2>824,(F2-824)/(4095-824)*5,(F2-824)/824*1.6)"		' 在Sheet2的E2单元格写入公式
        Sheet2.Range("E2:E" & countRows).FillDown			' 对E2单元格的内容向下填充到最后一行。countRows是前面定义的记录总行数的变量
        
        fragState = "FindStandbyStart"			' 设置变量并赋值
        startRows = 2
        endRows = 0
        countLoop = 0
        
        For i = 2 To countRows				' for循环,从2循环到countRows(表示总行数的变量),即从第2行遍历到最后一行
    
    	If i = countRows Then			
                endRows = countRows		
                fragState = "DrawChart"	
            End If
    
            If fragState = "FindStandbyStart" Then		' 判断是否相等
                If Sheet2.Range("C" & i) = 25 Then          ' 判断Sheet2当前行(i)的C列是否为25
                    fragState = "FindLoopEnd"		' 变量值改变(状态改变)
                End If					' 判断语句结束
            ElseIf fragState = "FindLoopEnd" Then		' Else if分支
                If Sheet2.Range("C" & i) = 95 Then          ' 判断Sheet2当前行(i)的C列是否为95
                    endRows = i - 1
                    fragState = "DrawChart"
                    'MsgBox endRows				' 调试的时候用了,就是把endRows的值打印出来看看是否正确
                End If
    	End If
            If fragState = "DrawChart" Then         	
                'MsgBox startRows
                'MsgBox endRows
                Sheet2.Range("B" & startRows).Formula = "=(A" & startRows & "-$A$" & startRows & ")*24*60"	
    		' 为了便于理解,这里可以把startRows当成2,即Sheet2.Range("B2").Formula = "=(A2-$A$2)*24*60",但实际上startRows不是固定的。
    		' 这样应该很容易理解了,就是在B2中写了个公式而已。注意这里的处理方式,变量是不需要写在双引号里的,然后用&连接起来。
                Sheet2.Range("B" & startRows, "B" & endRows).FillDown	' 对Sheet2的B列 从startRows行到endRows行 按startRow单元格的内容 进行填充
                
                x = Sheet3.Range("A" & countLoop * 15 + 1, "A" & countLoop * 15 + 15).Left	' 设置图表容器的左边缘
                y = Sheet3.Range("A" & countLoop * 15 + 1, "S" & countLoop * 15 + 1).Top	' 设置图表容器的右边缘
    	    w = Sheet3.Range("A1:S1").Width		' 设置图表容器的宽度为A列到S列
                h = Sheet3.Range("A1:A15").Height - 1	' 设置图表容器的高度为15行
    
                Set Ch1 = Sheet3.ChartObjects.Add(x, y, w, h)     	' Ch1相对于一个图表容器,后面要画的折线图的所有对象都在这个容器内,这里是设置容器大小
                
                If countLoop < 10 Then				' 设置图表容器的名字,为了控制名字的长度以致所有加了这个判断
                    Ch1.Name = "Result-0" & countLoop + 1		' 容器名字为格式为“Result-xx”
                Else
                    Ch1.Name = "Result-" & countLoop + 1
                End If
    
                With Ch1.Chart				' With是一个代码块,由End With结束。表示这个with块中的所有代码都是对Ch1.Chart的属性进行设置。
                    .HasTitle = True			' 如果没有With块,这句完全能用"Ch1.Chart.HasTitle = True"代替
                    .ChartTitle.Text = Ch1.Name		' 把图表容器的名字作为图表的标题
                    .ChartTitle.Left = 415			' 设置图表标题的位置
                    .ChartTitle.Top = -5
    
                    .PlotArea.Width = 885       		' 设置图表容器中 画图区域 相对于图表容器的位置
                    .PlotArea.Left = 10			' 图表容器中除了画图区域,还有标题,图列,以及坐标轴名字等其他对象
                    .PlotArea.Top = 15			' 设置合适的 画图区域,是为了其他对象更好的显示
                    .PlotArea.Height = 175
    
                    .Legend.Position = xlLegendPositionTop	' 将图例放在画图区域的上方。图例就是在一个有多个折线的图中,对每个折线含义的说明
                    .Legend.Left = 275			' 因为按上面的方法设置的图例位置稍微有点不太理想,所有这里对图例位置进行微调。
                    .Legend.Top = 20			' 注意这里的微调值是相对于图表容器的左上角,而不是 画图区域
                    .ChartType = xlLine			' 设置图表类型为折线图
    
                    .SeriesCollection.NewSeries		' 为折线图添加数据
                    .SeriesCollection(1).Values = Sheet2.Range("C" & startRows, "C" & endRows)	' 选择数据区域
                    .SeriesCollection(1).XValues = Sheet2.Range("B" & startRows, "B" & endRows)	' 选择X轴数据区域
                    .SeriesCollection(1).Name = Sheet2.Range("C1")					' 设置这一系列数据的名称,即图例的名称
                    .SeriesCollection(1).AxisGroup = 1	' 这里是指明这些数据用Y主坐标轴(图表中可以有左右两个表示不同意义的Y轴,左边是1,右边是2)
    
                    .SeriesCollection.NewSeries		' 添加新数据
                    .SeriesCollection(2).Values = Sheet2.Range("D" & startRows, "D" & endRows)
                    .SeriesCollection(2).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(2).Name = Sheet2.Range("D1")
                    .SeriesCollection(2).AxisGroup = 1
    
                    .SeriesCollection.NewSeries
                    .SeriesCollection(3).Values = Sheet2.Range("E" & startRows, "E" & endRows)
                    .SeriesCollection(3).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(3).Name = Sheet2.Range("E1")
                    .SeriesCollection(3).AxisGroup = 2	' 这一系列数据用的是Y副轴(右边)
                    
                    With .Axes(xlValue, xlPrimary)		' 对Y主坐标轴的属性进行设置
                        .MinimumScale = 0			' 设置Y主坐标轴的最小值
                        .MaximumScale = 115			' 最大值
                        .HasTitle = True			' 显示这个坐标轴的标题
                        .AxisTitle.Text = "Temp(Degree)"	' 设置标题为"Temp(Degree)"
                    End With
                    
                    With .Axes(xlValue, xlSecondary)	' 对Y副坐标轴的属性进行设置
                        .MinimumScale = -2
                        .MaximumScale = 12
                        .HasTitle = True
                        .AxisTitle.Text = "Voltage(V)"
                    End With
                    
                    With .Axes(xlCategory)			' 对X坐标轴的属性进行设置
                        .HasTitle = True
                        .AxisTitle.Text = "Time(min)"
                        .TickLabelSpacing = 200		' X轴坐标刻度太密了,设置每200个数据显示一个刻度。(设置范围是0-255)
                    End With
                    
                End With		' 注意,每一个With代码块都由With开始,End With结束
    
                countLoop = countLoop + 1
                startRows = endRows + 1
                fragState = "FindStandbyStart"
            End If
        Next
    End Sub
    

    现在对整个程序的功能进行一个简单的说明:原始数据是对一个产品进行工作寿命进行测试而得到的,所以数据总是在一定时间后又从新开始,但是这个一定时间稍微有点差别,这就导致了每次运行产生的数据长度是不太一样的。那如何区分每次运行产生的数据呢?请看Sheet2(DATA)的C列,C列每一次运行都是以95->50->72->95->50->72->...->25的方式结束的,但是每个值都会重复很多次。所以我就从C列开始查找,找到第一个95,表示第一次运行开始了,把行号startRows记录下来,然后接着找25,找的25后再向后查找95,这个95就表示第二次运行开始了,把这个行号减一就得到第一次运行的结束行号了。

    既然已经知道了数据范围,就可以根据数据画图了。

    下面的代码和上面一样,只是这一份的注释主要偏重于逻辑方面:

    ' 以'开始的为注释,一直到本行结束有效
    
    Sub MyCode()
        
        Sheet2.UsedRange.ClearContents      	' delete all the data of Sheet2
        
        If Sheet3.ChartObjects.Count > 0 Then   	' there is error if delete the sheet without chart
            Sheet3.ChartObjects.Delete          	' delete all the chart
        End If
        
        Sheet1.Columns(3).Copy Destination:=Sheet2.Columns(1)   ' 数据拷贝
        Sheet1.Columns(4).Copy Destination:=Sheet2.Columns(3)
        Sheet1.Columns(5).Copy Destination:=Sheet2.Columns(6)
        Sheet1.Columns(6).Copy Destination:=Sheet2.Columns(4)
        
        Sheet2.Rows(1).Delete
        Sheet2.Range("A1") = "       TIME       "		' 每一列数据的名称
        Sheet2.Range("B1") = " Delta time(min) "
        Sheet2.Range("C1") = " Temp setting(deg) "
        Sheet2.Range("D1") = " Temp test(deg) "
        Sheet2.Range("E1") = " PCB Output(V) "
        Sheet2.Range("F1") = " MCU Output(12bit DAC) "
        Sheet2.Range("A1:F1").Font.Bold = True
        Sheet2.Range("A1:F1").Columns.AutoFit
        'Sheet2.Columns("A:F").Select          		' select columns A to F
        'Selection.HorizontalAlignment = Excel.xlCenter
        Sheet2.Columns("A:F").HorizontalAlignment = Excel.xlCenter    	' same with above 2 rows
        'Sheet2.Columns("E").Select
        'Selection.NumberFormatLocal = "0.00"
        Sheet2.Columns("E").NumberFormatLocal = "0.00"    	' same with above 2 rows
        Sheet2.Columns("B").NumberFormatLocal = "0"
        
        countRows = Sheet2.UsedRange.Rows.Count            	' get the number of rows
        
        Sheet2.Range("E2").Formula = "=IF(F2>824,(F2-824)/(4095-824)*5,(F2-824)/824*1.6)"	' 填充公式,这里是把12位的ADC采样数据转换成电压值
        Sheet2.Range("E2:E" & countRows).FillDown						' 把上面填充的公式下拉到最后一行
        
        fragState = "FindStandbyStart"
        startRows = 2			' 原始数据的第一次循环一定从第二行开始,所以不用找了
        endRows = 0
        countLoop = 0			' 运行次数计数,主要是为了画图的时候决定图表位置,不能所有的图表都重叠画在一起啊
        
        For i = 2 To countRows
        
            If i = countRows Then		' 因为程序可能在任意地方停止,如果没有这个判断,就只能按部就班每次找到25后面的第一个95的前一行才能得到endRows	
                endRows = countRows		' 但如果数据就停在了25呢??那fragState的状态就永远到不了"DrawChart",也就永远无法画出最后一个图了
                fragState = "DrawChart"	' 所有这个If的作用只是为了画最后一个不完整循环的图形。
            End If
            
            If fragState = "FindStandbyStart" Then		' 因为前面已经记录了第一个95的位置,即startRows
                If Sheet2.Range("C" & i) = 25 Then         	' 所以这里是在找25了
                    fragState = "FindLoopEnd"		' 如果找到了就进入下一个状态,即找下一个95
                End If
            ElseIf fragState = "FindLoopEnd" Then
                If Sheet2.Range("C" & i) = 95 Then         	' 如果找到了下一个95,即下一个循环的开始
                    endRows = i - 1				' 则上一行就是上次循环的结束,即endRows
                    fragState = "DrawChart"			' 找到了startRows和endRows,制图的数据源就确定了,也就可以开始画图了
                    'MsgBox endRows
                End If
    	End If
            If fragState = "DrawChart" Then         	' 开始画图
                'MsgBox startRows
                'MsgBox endRows
                Sheet2.Range("B" & startRows).Formula = "=(A" & startRows & "-$A$" & startRows & ")*24*60"	' 填充公式并下拉
                Sheet2.Range("B" & startRows, "B" & endRows).FillDown					' 这里是计算每一行数据距循环开始的时间,单位为分钟
                
                x = Sheet3.Range("A" & countLoop * 15 + 1, "A" & countLoop * 15 + 15).Left
                y = Sheet3.Range("A" & countLoop * 15 + 1, "S" & countLoop * 15 + 1).Top
                w = Sheet3.Range("A1:S1").Width
                h = Sheet3.Range("A1:A15").Height - 1
                Set Ch1 = Sheet3.ChartObjects.Add(x, y, w, h)     	' 定义图表容器的大小
                
                If countLoop < 10 Then				' 给图表容器命名,并保证名字长度一致	
                    Ch1.Name = "Result-0" & countLoop + 1
                Else
                    Ch1.Name = "Result-" & countLoop + 1
                End If
    
                With Ch1.Chart
                    .HasTitle = True
                    .ChartTitle.Text = Ch1.Name
                    .ChartTitle.Left = 415
                    .ChartTitle.Top = -5
    
                    .PlotArea.Width = 885       			' 设置作图区大小
                    .PlotArea.Left = 10
                    .PlotArea.Top = 15
                    .PlotArea.Height = 175
    
                    .Legend.Position = xlLegendPositionTop		' 这三行是把图例放置在任意位置的法宝。第一行是为了让图例单行显示
                    .Legend.Left = 275				' xlLegendPositionRight可以让图例多行显示,然后再利用这两行调整位置
                    .Legend.Top = 20
    
                    .ChartType = xlLine				' 折线图
                    .SeriesCollection.NewSeries			' 添加数据
                    .SeriesCollection(1).Values = Sheet2.Range("C" & startRows, "C" & endRows)
                    .SeriesCollection(1).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(1).Name = Sheet2.Range("C1")	' 设置图例名称
                    .SeriesCollection(1).AxisGroup = 1		' 设置参考坐标
                    .SeriesCollection.NewSeries
                    .SeriesCollection(2).Values = Sheet2.Range("D" & startRows, "D" & endRows)
                    .SeriesCollection(2).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(2).Name = Sheet2.Range("D1")
                    .SeriesCollection(2).AxisGroup = 1
                    .SeriesCollection.NewSeries
                    .SeriesCollection(3).Values = Sheet2.Range("E" & startRows, "E" & endRows)
                    .SeriesCollection(3).XValues = Sheet2.Range("B" & startRows, "B" & endRows)
                    .SeriesCollection(3).Name = Sheet2.Range("E1")
                    .SeriesCollection(3).AxisGroup = 2
                    
                    With .Axes(xlValue, xlPrimary)
                        .MinimumScale = 0
                        .MaximumScale = 115
                        .HasTitle = True
                        .AxisTitle.Text = "Temp(Degree)"
                    End With
                    
                    With .Axes(xlValue, xlSecondary)
                        .MinimumScale = -2
                        .MaximumScale = 12
                        .HasTitle = True
                        .AxisTitle.Text = "Voltage(V)"
                    End With
                    
                    With .Axes(xlCategory)
                        .HasTitle = True
                        .AxisTitle.Text = "Time(min)"
                        .TickLabelSpacing = 200
                    End With
                    
                End With
    
                countLoop = countLoop + 1		' 循环次数递增,表示一个循环的图表已经制作完成,将开始下一个循环图表的制作
                startRows = endRows + 1             ' 记录好下一次循环开始位置,也可以写成startRows = i
                fragState = "FindStandbyStart"	' 进入开始寻找下一个25的状态
            End If
        Next					' for循环的结束
    End Sub						' 函数结尾
    

    OVER

     

     

     

    展开全文
  • PowerDesigner中默认不显示Common注释列,可根据... 使用Shift+Ctrl+X快捷键打开脚本运行窗口,粘贴以下代码执行即可。 注:若Common列为空,则填充Name列内容;不为空则必不变。 '如果comment为空,则填入name...

    PowerDesigner中默认不显示Common注释列,可根据以下步骤显示并紫东填充Name列内容。

    1、显示Common注释列

    2、运行VB Script脚本自动赋值

        使用Shift+Ctrl+X快捷键打开脚本运行窗口,粘贴以下代码执行即可。

         注:若Common列为空,则填充Name列内容;不为空则必不变。

    '如果comment为空,则填入name;如果不为空,则保留不变,避免已有的注释丢失.
    
    Option Explicit 
    
    ValidationMode = True
    
    InteractiveMode = im_Batch 
    
    Dim mdl 
    
    
    Set mdl = ActiveModel 
    
    If (mdl Is Nothing) Then
    
    MsgBox "There is no current Model "
    
    ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
    
    MsgBox "The current model is not an Physical Data model. "
    
    Else
    
    ProcessFolder mdl 
    
    End If
    
    
    Private sub ProcessFolder(folder) 
    
    Dim Tab 
    
    for each Tab in folder.tables 
    
    if not tab.isShortcut then 
    
    if trim(tab.comment)="" then '如果有表的注释,则不改变它.如果没有表注释.则把name添加到注释里面. 
    
    tab.comment = tab.name 
    
    end if 
    
    Dim col 
    
    for each col in tab.columns 
    
    if trim(col.comment)="" then '如果col的comment为空,则填入name,如果已有注释,则不添加;这样可以避免已有注释丢失.
    
    col.comment= col.name 
    
    end if 
    
    next 
    
    end if 
    
    next 
    
    
    
    Dim view 
    
    for each view in folder.Views 
    
    if not view.isShortcut and trim(view.comment)="" then 
    
    view.comment = view.name 
    
    end if 
    
    next 
    
    Dim f 
    
    For Each f In folder.Packages 
    
    if not f.IsShortcut then 
    
    ProcessFolder f 
    
    end if 
    
    Next 
    
    end sub

     显示以下内容说明执行完成。

     

    转载于:https://www.cnblogs.com/gaozejie/p/9328229.html

    展开全文
  • Alt F5或 Ctrl F5:将所有打开的Word文档最大化窗口还原到原来大小。Ctrl Shift F5:写书签。SHIFT F5:在最后4个编辑处移动光标。 F6:在任务窗格与文档窗口之间切换。Ctrl F6:在多个打开的文档窗口之间来回切换...
  • Excel_VBA程序设计.pdf

    热门讨论 2009-08-31 23:05:20
    26了解代码窗口 52 27 VB编辑器里的其它窗口 54 28接下来…… 55 第二章 VBA 第一步 55 1了解指令,模块和过程 55 2 VBA工程命名 55 3模块重命名 56 4从其它工程调用过程 57 5了解对象,属性和方法 58 6学习对象,...
  • Excel VBA程序设计.doc

    2009-07-06 22:16:12
    26了解代码窗口 52 27 VB编辑器里的其它窗口 54 28接下来…… 55 第二章 VBA 第一步 55 1了解指令,模块和过程 55 2 VBA工程命名 55 3模块重命名 56 4从其它工程调用过程 57 5了解对象,属性和方法 58 6学习对象,...
  • 26了解代码窗口 43 27 VB编辑器里的其它窗口 45 28接下来…… 45 第二章 VBA 第一步 45 1了解指令,模块和过程 45 2 VBA工程命名 46 3模块重命名 47 4从其它工程调用过程 48 5了解对象,属性和方法 49 6学习对象,...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • vc++ 开发实例源码包

    2014-12-16 11:25:17
    6:自定义快捷键. 7:在IE工具栏上加按钮,可以直接拖动连接到按钮上下载. 8:注册采用激活方式. 9:采用Messenger的弹出滑动消息提示框. 10:下载管理,虚拟文件夹. 11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议...
  • Excel_VBA教程

    2014-09-22 11:36:34
    26了解代码窗口 44 27 VB编辑器里的其它窗口 46 28接下来…… 46 第二章 VBA 第一步 46 1了解指令,模块和过程 47 2 VBA工程命名 47 3模块重命名 48 4从其它工程调用过程 49 5了解对象,属性和方法 50 6学习对象,...
  • GExperts 1.32 For Delphi 7

    2011-11-08 09:22:45
    Delphi中缺少像VB那样在编辑窗口中位于上方的对象--事件过程列表。此项功能正是在一定程度上弥补了这一点。  该窗口相当详细地列出了你所使用的窗口中所有的过程和函数,通过鼠标双击可以直接定位到该过程或者函数...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    26了解代码窗口 44 27 VB编辑器里的其它窗口 46 28接下来…… 46 第二章 VBA 第一步 46 1了解指令,模块和过程 47 2 VBA工程命名 47 3模块重命名 48 4从其它工程调用过程 49 5了解对象,属性和方法 50 6学习对象,...
  • Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

vb打开代码窗口快捷键