2、为窗体编写VBA代码,很難跟進

2019-11-07 05:50栏目:网络办公
TAG:

问题:在日常做事中会蒙受,知道个中叁个数据,举个例子姓名,在报表中输入姓名后,想要自动带出网页中该姓名对应的连带数据,举例该姓名的对讲机,地址等音信,怎么样产生吗?

用作世界最理想的矢量图形设计软件CorelDRAW X3(最新版卡塔 尔(阿拉伯语:قطر‎居然未有询问图形周长、面积的功效,然而作为矢量图形设计软件,查询图形几何属性是至关重要的,幸而有VBA,给了我们扩展CorelDRAW X3作用的十二万分空间,以下就是询问矢量图形几何音讯的VBA进度。假设你有Corel Designer 12,   能够在在那之中找到此意义,将在那之中的窗体,模块,类模块,导出,再到 CorelDRAW X3 VBA中,把它们导过来,运维“宏”就可以在CorelDRAW X3中运营了,若无请看上面宏代码编写进程。

回答:

1、运营CorelDRAW X3,新建“图形1”,按“Alt+F11”张开Visual Basic编辑器,增多如下图所示客商窗体,名字为“frmGeometric”:图片 12、为窗体编写VBA代码,窗体代码全体之类:

列出装有专业薄的 VBA

Excel抓取并询问网络数据足以选择“获取和转移”+“查找引用函数”的效力结合来得以达成。

Option Explicit

由 Mr Colo写的 VBA 需要在VBA内选取 Microfost Visual Basic Applications Extensbility

例:下图是百度完备“奥林匹克运动会”网页中的多少个表格,大家以此为例实现抓取该表格至Excel中,并且能够通过输入第几届来查询相应的实行城市。

Private CurUnit As Long
Private Lang As New clsLang
Private bPerimeter As Boolean
Private bValidSelection As Boolean
Private bValidArea As Boolean
Private vDepth As Double

请在 Tools - 宏 - 安全性 - 选拔 信赖存取 Visual Basic 项目

图片 2

Private vLength As Double
Private vArea As Double

' Module
' List All VBA module
Dim x As Long
Dim aList()

Step1:使用“获取和更换”功效将网络数据抓取至Excel中

各样点击“数据选项卡”、“新建查询”、“从别的源”、“从Web”。

图片 3

弹出如下窗口,手动将百度周详“奥运会”的网站复制粘入UHighlanderL栏,并点击鲜明。

图片 4

Excel与网页连接必要一定时期,稍等片刻后会弹出如下窗口,右侧列表中的每一个Table都意味着该网页中的三个表格,挨个点击预览后发现,Table3是我们所需的数码。

图片 5

点开下方的“加载”旁边的下拉箭头,选取“加载到”。

图片 6

在弹出的窗口中,在“选用想要在办事薄中查看此数据的措施”下抉择“表”,并点击加载。

图片 7

如图,网页表格中的数据已被抓取至Excel中。

图片 8

逐个点击“表格工具”、“设计”,将“表名称”改为奥林匹克运动会。

图片 9

Private WithEvents cPrecision As clsIntSpin

Sub GetVbProj()
Dim oVBC As VBIDE.VBComponent
Dim Wb As Workbook
x = 2
For Each Wb In Workbooks
For Each oVBC In Workbooks(Wb.Name).VBProject.VBComponents
If Workbooks(Wb.Name).VBProject.Protection = vbext_pp_none Then
Call GetCodeRoutines(Wb.Name, oVBC.Name)
End If
Next
Next
With Sheets.Add
.[A1].Resize(, 3).Value = Array("Workbook", "Module", "Procedure")
.[A2].Resize(UBound(aList, 2), UBound(aList, 1)).Value = _
Application.Transpose(aList)
.Columns("A:C").Columns.AutoFit
End With
End Sub

Step2:使用“查找与引用”函数实现多少查询

树立查询区域,包蕴“届数”和“主办城市”,在届数中放肆选用意气风发届输入,下图输入“第08届”,在主办城市下输入vlookup函数,能够获取第08届奥运会的主办城市是法国巴黎,当改革届数时,对应的起头城市也随时改动。

公式:=VLOOKUP([届数],奥运会[#全部],4,0)

图片 10

注意点:若网页中的数据变动较频仍,则能够设置链接网页的数额依期刷新:

①将鼠标定位于导入的数量区域中,切换来选项卡,点击下拉箭头→

图片 11

②在弹出的对话框中,设置,比如设置为10分钟举行刷新。那样,每隔10分钟数据就能刷新二遍,时刻保证收获的数量位最新的。

图片 12


style="font-weight: bold;">「精进Excel」系头条签订左券笔者,关切自己,就算任意点开三篇文章,未有你想要的文化,算小编耍流氓!

回答:

世家好,小编是@Excel实例摄像网址长@款待私信大概特邀小编回答Excel相关难题!


有人在群里问手提式有线电话机号怎么批量查归于地,第一深感是百度时而,结果还真没找到好用的,既然如此,笔者就自身写二个啊!首先找了多少个webapi,找到个相当好用的,就用vba写了个自定义函数,测验下以为照旧相当好用,速度也挺快

图片 13

style="font-weight: bold;">源文件下载链接请私信回复63005即可

运用方式:

1.在本表中央直属机关接在A1列输入手提式无线电话机号就可以

2.要在别的表中,alt+f11打开vbe编辑器,复制模块中代码,在您的新表中国建工业总集合团立模块,粘贴代码就可以

3.函数参数表明

GetPhoneInfo(号码,参数)

编号—即单个手提式无线话机号

参数(1,2,3,4):1-城市,2-省,3-运营商, 4-全部

代码如下

Dim ObjXML As Object

Function GetPhoneInfo(number, Optional para As Byte = 1)

'获取手提式有线电话机号对应的基本消息 默以为城市

'para:1-城市,2-省,3-运营商,4,全部

Dim s As String

s = GetBody("" & number)

Select Case para

Case 1

GetPhoneInfo = HtmlFilter(s, "City"":""", """")

Case 2

GetPhoneInfo = HtmlFilter(s, "Province"":""", """")

Case 3

GetPhoneInfo = HtmlFilter(s, "TO"":""", """")

Case 4

GetPhoneInfo = HtmlFilter(s, "City"":""", """") & "," & HtmlFilter(s, "Province"":""", """") & "," & HtmlFilter(s, "TO"":""", """")

End Select

GetPhoneInfo = Replace(GetPhoneInfo, " ", "")

End Function

Private Sub Test()

Dim i&, j&, k&, arr, brr

url = ""

Debug.Print GetBody(url)

End Sub

'''尽管现身乱码,UTF-8可改为GB2312

Public Function GetBody(ByVal url$, Optional ByVal Coding$ = "utf-8")

On Error Resume Next

Set ObjXML = CreateObject("Microsoft.XMLHTTP")

With ObjXML

.Open "Get", url, False, "", ""

'.setRequestHeader "If-Modified-Since", "0"

'.setRequestHeader "User-Agent", _

".Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0"

.Send

GetBody = .ResponseBody

End With

GetBody = BytesToBstr(GetBody, Coding)

Set ObjXML = Nothing

End Function

Public Function BytesToBstr(strBody, CodeBase)

Dim ObjStream

Set ObjStream = CreateObject("Adodb.Stream")

With ObjStream

.Type = 1: .Mode = 3: .Open:

.Write strBody: .Position = 0: .Type = 2: .Charset = CodeBase

BytesToBstr = .ReadText: .Close

End With

Set ObjStream = Nothing

End Function

Public Function HtmlFilter(ByVal htmlText$, ByVal Label1$, ByVal label2$)

'再次来到html字符串lable1和方今的lable2标签中的数据

Dim pStart As Long, pStop As Long

pStart = InStr(htmlText, Label1) + Len(Label1)

If pStart <> 0 Then

pStop = InStr(pStart, htmlText, label2)

HtmlFilter = Mid(htmlText, pStart, pStop - pStart)

End If

End Function

回答:

规范的人做正经作业。

Private Sub OnUnitChange(ByVal Unit As Long)
    Dim strLength As String
    Dim strArea As String
    Dim strVolume As String
   
    vDepth = Application.ConvertUnits(vDepth, GetAppUnits(CurUnit), GetAppUnits(Unit))
    CurUnit = Unit
    UpdateDepth
   
    strLength = GetCurUnitString()
    lblUnitLength.Caption = strLength
    lblUnitArea.Caption = strLength & GetSquare(False)
    lblUnitDepth.Caption = strLength
    lblUnitVolume.Caption = strLength & GetCube(False)
   
    UpdateValues
End Sub

Private Sub GetCodeRoutines(wbk As String, VBComp As String)
Dim VBCodeMod As CodeModule
Dim StartLine As Long

如果只是不时有那么些职务,照旧在互连网出点钱,找人做了。

花费的钱确实相当的少。几百元丰盛了。

Private Sub UpdateDepth()
    Updating = Updating + 1
    txtDepth.Text = CStr(vDepth)
    Updating = Updating - 1
End Sub

On Error Resume Next
Set VBCodeMod = Workbooks(wbk).VBProject.VBComponents(VBComp).CodeModule
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
ReDim Preserve aList(1 To 3, 1 To x - 1)
aList(1, x - 1) = wbk
aList(2, x - 1) = VBComp
aList(3, x - 1) = .ProcOfLine(StartLine, vbext_pk_Proc)
x = x + 1
StartLine = StartLine + .ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
If Err Then Exit Sub
Loop
End With
Set VBCodeMod = Nothing
End Sub

如要是平时职责多,且有必然的底工,学习一下未必不可。

老猫是由此VBA操作的,写叁个代码,抓取数据,也很有利。

老猫正在开辟的后生可畏款足彩软件程序救市从网络抓取多量多少。然后剖判和瞻望足彩。

Private Function GetCurUnitString() As String
    Dim strLength As String
    Select Case CurUnit
        Case 0
            strLength = Lang.GetString(eUnitInch)
        Case 1
            strLength = Lang.GetString(eUnitMM)
        Case 2
            strLength = Lang.GetString(eUnitCM)
        Case 3
            strLength = Lang.GetString(eUnitM)
    End Select
    GetCurUnitString = strLength
End Function

不得以选用或编辑单元格

那是抓取的交锋列表:

图片 14

Private Function GetSquare(ByVal bUnicode As Boolean) As String
    Dim s As String
    s = ChrW$(178)
    If Not bUnicode And Asc(s) = 63 Then
        s = "2"
    End If
    GetSquare = s
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Myrange As Range, KeepOut As Range
Dim ws As Worksheet

那是VBA程序代码

图片 15

Private Function GetCube(ByVal bUnicode As Boolean) As String
    Dim s As String
    s = ChrW$(179)
    If Not bUnicode And Asc(s) = 63 Then
        s = "3"
    End If
    GetCube = s
End Function

'Full sheet
'Set KeepOut = ActiveSheet.Cells
'Several Columns
'Set KeepOut = ActiveSheet.Range("B:D")
'Test Range
Set KeepOut = ActiveSheet.Range("A2:C5")

那是抓取的赔率数据

图片 16

总体上看,假使想学是一倡百和的。

回答:

以EXCEL2000为例来给您作证。

大器晚成、首先张开EXCEL二〇〇二,在菜单栏找到“数据”然后在下拉菜单点击“导入外部数据-新建WEB查询”
图片 17
二、然后在开采的对话框中的地址栏中,将你要导入的网站输入进去,按下转到开关。
图片 18
三、在弹开的对话框中原则必要导入的区域,按下导入开关,这时候,数据就被导入到EXCEL里面啦!
图片 19末尾,你的微型机得链接互连网,要不未有数据,那样导入的收益是,能够和网址上保持大器晚成致,无需实行手动更新,极低价。

Private Sub cArea_Click()
    UpdateControls
End Sub

Set Myrange = Intersect(Target, KeepOut)
'Leave if the intersecttion ws untouched
If Myrange Is Nothing Then Exit Sub

Private Sub cboUnits_Change()
    OnUnitChange cboUnits.ListIndex
End Sub

'Stop select firing a second time
Application.EnableEvents = False
If KeepOut.Rows.Count = 65536 And KeepOut.Columns.Count = 256 Then
'Entire sheet is the KeepOut range. Eek!
'Bounce user to a dummy sheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets("KickMeTo")
On Error GoTo 0
If ws Is Nothing Then
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "KickMeTo"
End If
MsgBox "Houston we have a problem" & vbNewLine & _
"You cannot select any cell in " & vbNewLine & "'" & KeepOut.Parent.Name & "'" & vbNewLine & _
"So you have been directed to a different sheet"
ws.Activate
ElseIf KeepOut.Rows.Count = 65536 Then
'If all rows are contained in the "KeepOut" range then:
'Now we need to find a cell that is in a column to the right or left of this range
If KeepOut.Cells(1).Column > 1 Then
'If there is a valid column to the left of the range then select the cell in this column
Cells(KeepOut.Cells(1).Row, KeepOut.Cells(1).Column - 1).Select
Else
'Else select the cell in first column to the right of the range
Cells(KeepOut.Cells(1).Row, KeepOut.Cells(1).Column + 1).Select
End If
MsgBox "You cannot select " & KeepOut.Address(False, False) & vbNewLine & _
"You have been directed to the first free column in the protected range", vbCritical
ElseIf KeepOut.Rows.Count + KeepOut.Cells(1).Row - 1 = 65536 Then
'Select first cell in Column A before "KeepOut" Range
Cells(KeepOut.Cells(1).Row - 1, 1).Select
MsgBox "You cannot select " & KeepOut.Address(False, False) & vbNewLine & _
"You have been directed to the first free cell in Column A above the protected range", vbCritical
Else
'Select first cell in Column A beyond "KeepOut" Range
MsgBox "You cannot select " & KeepOut.Address(False, False) & vbNewLine & _
"You have been directed to the first free cell in Column A below the protected range", vbCritical
Cells(KeepOut.Rows.Count + KeepOut.Cells(1).Row, 1).Select
End If
Application.EnableEvents = True
End Sub

Private Sub cLength_Click()
    UpdateControls
End Sub

MicroSoft 沒有文件顯示 編碼 的分寸限定
64K 太大,很難跟進

Private Sub cmClose_Click()
    Unload Me
End Sub

以下編碼檢示 Module 的高低

Private Sub cmCopy_Click()
    Dim sData As String
    Dim oData As New DataObject

Sub get_Mod_Size()
Dim myProject As Object
Dim ComName As String
Dim tempPath As String
Dim fs As Object, a As Object
Dim result As String

    sData = GetDataString(False)
    If sData <> "" Then
        oData.SetText sData
        oData.PutInClipboard
    End If
End Sub

' **************************************************************************************
' Use this to determine the size of a module
' Set ModName (component name) and tempPath (where to store the temp fule), then run
' **************************************************************************************

Private Sub cmCreateText_Click()
    Const TextSize As Double = 24 ' 24 pt text
    Dim lr As Layer
    Dim sData As String
    Dim sr As ShapeRange
    Dim x As Double, y As Double, w As Double, h As Double
    sData = GetDataString(True)
    Updating = Updating + 1
    If Not ActiveShape Is Nothing And sData <> "" Then
        Set sr = ActiveSelectionRange
        ActiveShape.GetBoundingBox x, y, w, h
        x = x + w / 2
        y = y - ActiveDocument.ToUnits(TextSize, cdrPoint)
        Set lr = ActiveShape.Layer
        If lr.Editable Then Set lr = ActiveLayer
        lr.CreateArtisticText x, y, sData, cdrEnglishUS, , "Times New Roman", 24, cdrTrue, cdrTrue, , cdrLeftAlignment
        sr.CreateSelection
    End If
    Updating = Updating - 1
End Sub

' Set these to run
ComName = "Module1"
tempPath = "c:Test.bas"

Private Sub cmRefresh_Click()
    RefreshForm
End Sub

' ***** No action needed after this point *****

Private Sub cmReset_Click()
    vDepth = 0
    UpdateDepth
    UpdateValues
End Sub

' Export the component (module, form, etc) - this is only temporary
Set myProject = Application.VBE.ActiveVBProject.VBComponents
myProject(ComName).Export (tempPath)

Private Sub cPrecision_Change()
    UpdateValues
End Sub

' Get the size of the file created
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.getfile(tempPath)
result = ComName & " uses " & (a.Size / 1000) & " KB."

Private Sub cVolume_Click()
    UpdateControls
End Sub

' Return the file size
MsgBox result, vbExclamation

 

' Delete the exported file
fs.Deletefile tempPath

Private Sub txtDepth_Change()
    Dim s As String
   
    If Updating Then Exit Sub
   
    s = Trim$(txtDepth.Text)
    If s <> "" Then
        vDepth = Val(Replace(s, ",", "."))
    Else
        vDepth = 0
    End If
    UpdateValues
End Sub

End Sub

Private Sub UserForm_Initialize()
    Updating = 0
    vDepth = 0
   
    Set cPrecision = New clsIntSpin
    cPrecision.Init txtPrecision, spnPrecision, 3, lblPrecision, 0, 5, 1
   
    Me.Caption = Lang.GetString(eFormCaption)
   
    grpLength.Caption = Lang.GetString(eCapPerimeter)
    cLength.Caption = Lang.GetString(eCapPerimeter) & ":"
    bPerimeter = True
   
    grpArea.Caption = Lang.GetString(eCapArea)
    cArea.Caption = Lang.GetString(eCapArea) & ":"
   
    grpVolume.Caption = Lang.GetString(eCapVolume)
    lblDepth.Caption = Lang.GetString(eCapDepth) & ":"
    cmReset.Caption = Lang.GetString(eBtnReset)
    cVolume.Caption = Lang.GetString(eCapVolume) & ":"
   
    cmCreateText.Caption = Lang.GetString(eBtnCreateText)
    cmCopy.Caption = Lang.GetString(eBtnCopy)
    cmClose.Caption = Lang.GetString(eBtnClose)
    cmRefresh.Caption = Lang.GetString(eBtnRefresh)
    lblUnits.Caption = Lang.GetString(eCapUnits) & ":"
    lblPrecision.Caption = Lang.GetString(eCapPrecision) & ":"
  
    cboUnits.Clear
    cboUnits.AddItem Lang.GetString(eStrInch)
    cboUnits.AddItem Lang.GetString(eStrMM)
    cboUnits.AddItem Lang.GetString(eStrCM)
    cboUnits.AddItem Lang.GetString(eStrM)
    cboUnits.ListIndex = IIf(Lang.IsMetric(), 1, 0)
   
    RefreshForm
    MacroRunning = True
End Sub

测验 WorkSheet 是不是留存

Sub RefreshForm()
    Dim nSelCount As Long
   
    bValidSelection = False
    bValidArea = False
   
    Updating = Updating + 1
   
    On Error GoTo ErrHandler
   
    If Not ActiveDocument Is Nothing Then
        nSelCount = ActiveDocument.Selection.Shapes.Count
        Select Case nSelCount
            Case 0
                ShowStatusMessage Lang.GetString(eStrNoSelection)
               
            Case 1
                ProcessSelection ActiveShape
               
            Case Else
                ShowStatusMessage Lang.GetString(eStrGroupSelected)
        End Select
    Else
        ShowStatusMessage Lang.GetString(eStrNoSelection)
    End If
   
ExitSub:
    UpdateControls
    Updating = Updating - 1
    Exit Sub
   
ErrHandler:
    ShowStatusMessage Lang.GetString(eStrError) & ": " & Err.Description
    Resume ExitSub
End Sub

Sub IsSheetExist()
Dim wSheet As Worksheet
On Error Resume Next
Set wSheet = Sheets("Sheet6")
If wSheet Is Nothing Then
MsgBox "Worksheet does not exist"
Set wSheet = Nothing
On Error GoTo 0
Else
MsgBox "Sheet does exist"
Set wSheet = Nothing
On Error GoTo 0
End If
End Sub

Private Sub EnableTextControl(ByVal Txt As TextBox, ByVal bState As Boolean)
    Txt.Enabled = bState
    Txt.BackColor = IIf(bState, vbWindowBackground, vbButtonFace)
End Sub

图片 20

Private Sub UpdateControls()
    Dim bEnabled As Boolean
   
    cLength.Enabled = bValidSelection
    EnableTextControl txtLength, bValidSelection
    lblUnitLength.Enabled = bValidSelection

让职业表始终置顶

    cArea.Enabled = bValidArea
    EnableTextControl txtArea, bValidArea
    lblUnitArea.Enabled = bValidArea
   
    lblDepth.Enabled = bValidArea
    EnableTextControl txtDepth, bValidArea
    lblUnitDepth.Enabled = bValidArea
    cmReset.Enabled = bValidArea
    cVolume.Enabled = bValidArea
    EnableTextControl txtVolume, bValidArea
    lblUnitVolume.Enabled = bValidArea
   
    bEnabled = bValidSelection
    If bEnabled Then
        bEnabled = cLength.Value <> 0
        If bValidArea And Not bEnabled Then
            bEnabled = cArea.Value <> 0 Or cVolume.Value <> 0
        End If
    End If
    cmCreateText.Enabled = bEnabled
    cmCopy.Enabled = bEnabled
End Sub

----------------- Module

Private Sub ProcessSelection(ByVal s As Shape)
    If s.Type = cdrGroupShape Then
        ShowStatusMessage Lang.GetString(eStrGroupSelected)
    ElseIf s.IsSimpleShape And s.Type <> cdrTextShape Then
        ProcessCurve s.DisplayCurve
    Else
        ShowStatusMessage Lang.GetString(eStrInvalidObject)
    End If
End Sub

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Private Function CheckSubpaths(ByVal crv As Curve) As Boolean
    Dim bRet As Boolean
    Dim n As Long
    bRet = True
    If crv.SubPaths.Count <> 1 Then
        For n = 2 To crv.SubPaths.Count
            If crv.SubPaths(n).Nodes.Count > 1 Then
                bRet = False
                Exit For
            End If
        Next n
    End If
    CheckSubpaths = bRet
End Function

Public Sub MakeNormal(hwnd As Long)
SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub
Public Sub MakeTopMost(hwnd As Long)
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

Private Sub ProcessCurve(ByVal crv As Curve)
    Dim v As Double
    Dim bClearStatus As Boolean
    Dim bClosed As Boolean
   
    bClosed = crv.SubPaths(1).Closed
    bClearStatus = True
    bValidArea = bClosed And CheckSubpaths(crv)
    If bValidArea Then
        grpLength.Caption = Lang.GetString(eCapPerimeter)
        cLength.Caption = Lang.GetString(eCapPerimeter) & ":"
        bPerimeter = True
    Else
        grpLength.Caption = Lang.GetString(eCapLength)
        cLength.Caption = Lang.GetString(eCapLength) & ":"
        bPerimeter = False
    End If
   
    bValidSelection = True
    vLength = crv.Length
   
    If bValidArea Then
        vArea = calcShapeArea(crv.SubPaths(1))
    Else
        vArea = 0
        If bClosed Then
            ShowStatusMessage Lang.GetString(eStrMultipathCurve)
        Else
            ShowStatusMessage Lang.GetString(eStrCurveOpen)
        End If
        bClearStatus = False
    End If
   
    If bClearStatus Then ClearStatusMessage
    UpdateValues
End Sub

Sub test()
Call MakeTopMost(Application.hwnd)
Call MakeNormal(Application.hwnd)
End Sub

Private Sub UpdateValues()
    Dim v As Double
    txtLength.Text = FormatValue(GetLength(vLength))
   
    If bValidArea Then
        v = GetArea(vArea)
        txtArea.Text = FormatValue(v)
        txtVolume.Text = FormatValue(v * vDepth)
    Else
        txtArea.Text = ""
        txtVolume.Text = ""
    End If
End Sub

有效下拉框的莫斯中国科学技术大学学 显示越多更加直观

Private Function FormatValue(ByVal v As Double) As String
    Dim sFormat As String
    sFormat = "0"
    If cPrecision.GetValue() > 0 Then
        sFormat = "0." & String$(cPrecision.GetValue(), "0")
    End If
    FormatValue = Format$(v, sFormat)
End Function

Option Explicit

Private Function GetAppUnits(ByVal vUnit As Long) As cdrUnit
    Dim tUnit As cdrUnit
    Select Case CurUnit
        Case 1
            tUnit = cdrMillimeter
        Case 2
            tUnit = cdrCentimeter
        Case 3
            tUnit = cdrMeter
        Case Else
            tUnit = cdrInch
    End Select
    GetAppUnits = tUnit
End Function

Dim oDpd As Object
Dim sFml1
Dim prvTarget As Range

Private Function GetLength(ByVal v As Double) As Double
    If ActiveDocument Is Nothing Then
        GetLength = 0
    Else
        GetLength = ActiveDocument.FromUnits(v, GetAppUnits(CurUnit)) * ActiveDocument.WorldScale
    End If
End Function

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Const dFixedPos As Double = "0.8"
Const dFixWidth As Double = "16" 'Change here to change WIDTH of the DropDown
Dim vld As Validation
Dim lDpdLine As Long

Private Function GetArea(ByVal v As Double) As Double
    GetArea = GetLength(GetLength(v))
End Function

If Not prvTarget Is Nothing Then
If Not oDpd Is Nothing Then
If oDpd.Value = 0 Then
prvTarget.Value = vbNullString
Else
prvTarget.Value = Range(Mid(sFml1, 2)).Item(oDpd.Value)
End If
Set prvTarget = Nothing
End If
End If

Private Function calcShapeArea(ByVal sp As SubPath) As Double
    Dim cx As New Collection
    Dim cy As New Collection
    Dim seg As Segment
    Dim n As Long
    Dim x As Double, y As Double
    Dim Area As Double
    Dim nPts As Long
   
    sp.StartNode.GetPosition x, y
   
    cx.Add x
    cy.Add y
   
    For Each seg In sp.Segments
        If seg.Type = cdrCurveSegment Then
            For n = 1 To 49
                seg.GetPointPositionAt x, y, n / 50
                cx.Add x
                cy.Add y
            Next n
        End If
        seg.EndNode.GetPosition x, y
        cx.Add x
        cy.Add y
    Next seg
   
    Area = 0
    For n = 1 To cx.Count - 1
        Area = Area + cx(n) * cy(n + 1) - cy(n) * cx(n + 1)
    Next
   
    calcShapeArea = Abs(Area / 2)
End Function

On Error Resume Next
oDpd.Delete
sFml1 = vbNullString
Set oDpd = Nothing
On Error GoTo 0

Private Sub ShowStatusMessage(ByVal msg As String)
    lblStatusBar.Caption = msg
End Sub

If Target.Count > 1 Then
Set oDpd = Nothing
Exit Sub
End If

Private Sub ClearStatusMessage()
    lblStatusBar.Caption = ""
End Sub

Set vld = Target.Validation
On Error GoTo Terminate
sFml1 = vld.Formula1
On Error GoTo 0

Private Sub UserForm_Terminate()
    MacroRunning = False
End Sub

Set prvTarget = Target

Private Function GetDataString(ByVal bUnicode As Boolean)
    Dim s As String
    s = ""
    If bValidSelection Then
        If cLength.Value Then
            If bPerimeter Then
                s = Lang.GetString(eCapPerimeter)
            Else
                s = Lang.GetString(eCapLength)
            End If
            s = s & " = " & txtLength.Text & " " & GetCurUnitString()
        End If
       
        If bValidArea Then
            If cArea.Value Then
                If s <> "" Then s = s & vbCrLf
                s = s & Lang.GetString(eCapArea) & " = " & txtArea.Text & " " & GetCurUnitString() & GetSquare(bUnicode)
            End If
           
            If cVolume.Value Then
                If s <> "" Then s = s & vbCrLf
                s = s & Lang.GetString(eCapVolume) & " = " & txtVolume.Text & " " & GetCurUnitString() & GetCube(bUnicode)
            End If
        End If
    End If
    GetDataString = s
End Function

lDpdLine = Range(Mid(sFml1, 2)).Rows.Count

3、增多模块,名称叫“Information”,代码如下:

With Target
Set oDpd = ActiveSheet.DropDowns.Add( _
.Left - dFixedPos, _
.Top - dFixedPos, _
.Width + dFixWidth + dFixedPos * 2, _
.Height + dFixedPos * 2)
End With
With oDpd
.ListFillRange = sFml1
.DropDownLines = lDpdLine
.Display3DShading = True
End With
Terminate:
End Sub

Option Explicit

图片 21点击浏览该公文

Public MacroRunning As Boolean
Public Updating As Long

图片 22

Public Sub Dialog()
    EventsEnabled = True
    frmGeoMetric.Show vbModeless
End Sub

請問如何不改變activecell之下將某风流倜傥儲存格顯示於左上角?

4、增多多个类模块:

1.

  (1卡塔尔国名字为clsIntSpin,代码如下:

ActiveWindow.SmallScroll Up:=65536 ActiveWindow.SmallScroll ToLeft:=256 用地点的方式先回到 A1 再用上边包车型地铁方法到定點 ActiveWindow.SmallScroll Down:=儲存格列號 - 1 ActiveWindow.SmallScroll ToRight:=儲存格欄號 - 1

Option Explicit

2.

Public Event Change()

ActiveCell.Select ActiveWindow.ScrollRow = ActiveCell.Row ActiveWindow.ScrollColumn = ActiveCell.Column

'================= Private Data =================
Private WithEvents cTxt As TextBox
Private WithEvents cSpin As SpinButton
Private Updating As Long
Private Value As Long
Private lLabel As Label
Private Digits As Long

3.

'================= Interface ================
Public Sub Init(Txt As TextBox, Spin As SpinButton, ByVal v As Long, Optional CtlLabel As Label, Optional ByVal nMin As Long = 0, Optional ByVal nMax As Long = 2147483647, Optional ByVal nStep As Long = 1, Optional ByVal NumDigits As Long)
    If v < nMin Then v = nMin
    If v > nMax Then v = nMax
    Value = v
    Set cTxt = Txt
    Set cSpin = Spin
    Set lLabel = CtlLabel
    BeginUpdate
    If NumDigits > 0 Then
        Digits = NumDigits
    Else
        Digits = 1
    End If
   
    cTxt.Value = FormatValue(Value)
    With cSpin
        .Min = nMin
        .Max = nMax
        .SmallChange = nStep
        .Value = Value
    End With
   
    EndUpdate
End Sub

Application.Goto ActiveCell, True

Public Function OnTextExit() As Boolean
    Dim n As Long
    OnTextExit = False
    If Updating = 0 Then
        n = GetTextValue()
        BeginUpdate
        If cSpin.Value <> n Then
            cSpin.Value = n
            Value = n
            OnTextExit = True
            RaiseEvent Change
        Else
            cTxt.Value = FormatValue(n)
        End If
        EndUpdate
    End If
End Function

图片 23

Public Sub SetValue(ByVal nVal As Long)
    BeginUpdate
    With cSpin
        If nVal < .Min Then nVal = .Min
        If nVal > .Max Then nVal = .Max
        .Value = nVal
    End With
    Value = nVal
    cTxt.Value = FormatValue(nVal)
    EndUpdate
End Sub

Save Sheet as WorkBook

Public Function GetValue() As Long
    GetValue = Value
End Function

Sub SaveShtsAsBook()
Dim Sheet As Worksheet, SheetName$, MyFilePath$, N&
MyFilePath$ = ActiveWorkbook.Path & "" & _
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
' End With
On Error Resume Next '<< a folder exists
MkDir MyFilePath '<< create a folder
For N = 1 To Sheets.Count
Sheets(N).Activate
SheetName = ActiveSheet.Name
Cells.Copy
Workbooks.Add (xlWBATWorksheet)
With ActiveWorkbook
With .ActiveSheet
.Paste
.Name = SheetName
[A1].Select
End With
'save book in this folder
.SaveAs Filename:=MyFilePath _
& "" & SheetName & ".xls"
.Close SaveChanges:=True
End With
.CutCopyMode = False
Next
End With
Sheet1.Activate
End Sub

Public Sub Enable(ByVal bState As Boolean)
    If Not lLabel Is Nothing Then lLabel.Enabled = bState
    cTxt.Locked = Not bState
    cTxt.TabStop = bState
    cTxt.BackColor = IIf(bState, vbWindowBackground, vbButtonFace)
    cTxt.ForeColor = IIf(bState, vbWindowText, vbButtonShadow)
    cSpin.Enabled = bState
End Sub

+++++++++++++++++++++++++++++++++++++++++++++++++++++

Public Sub SetMaxRange(ByVal nVal)
    BeginUpdate
    If Value > nVal Then
        Value = nVal
        cSpin.Value = nVal
        cTxt.Value = FormatValue(nVal)
    End If
    cSpin.Max = nVal
    EndUpdate
End Sub

Sub BreakExternalLinks()

Public Sub SetMinRange(ByVal nVal)
    BeginUpdate
    If Value < nVal Then
        Value = nVal
        cSpin.Value = nVal
        cTxt.Value = FormatValue(nVal)
    End If
    cSpin.Min = nVal
    EndUpdate
End Sub

Dim WS As Worksheet
Dim Rng1 As Range
Dim Cell As Range

'================ Helper Functions ==============
Private Sub BeginUpdate()
    Updating = Updating + 1
End Sub

For Each WS In ActiveWorkbook.Worksheets
With WS
On Error Resume Next
Set Rng1 = Cells.SpecialCells(xlCellTypeFormulas, 23)

Private Sub EndUpdate()
    Updating = Updating - 1
End Sub

' 23 - All formulae
' 16 - All formulae with errors
' 2 - All formulae with text
' 4 - All formulae with logic
' 6 - All formulae with text or logic

Private Function GetTextValue() As Long
    Dim v As Double
    v = 0
    If Trim$(cTxt.Text) <> "" Then v = Val(cTxt.Text)
    If v < CDbl(cSpin.Min) Then v = cSpin.Min
    If v > CDbl(cSpin.Max) Then v = cSpin.Max
    GetTextValue = CLng(v)
End Function

On Error GoTo 0
If Not Rng1 Is Nothing Then
For Each Cell In Rng1
If Left(Cell.Formula, 2) = "='" Then
Cell.Value = Cell.Value
End If
Next
End If
Set Rng1 = Nothing
End With
Next

Private Function FormatValue(ByVal v As Long) As String
    Dim s As String
    Dim bNegative As Boolean
   
    bNegative = v < 0
    s = Trim$(str$(Abs(v)))
    If Len(s) < Digits Then
        s = Right$(String$(Digits, "0") & s, Digits)
    End If
   
    If bNegative Then s = "-" & s
    FormatValue = s
End Function

End Sub

Private Sub Class_Initialize()
    Value = 0
End Sub

图片 24

Private Sub cSpin_Change()
    If Updating = 0 Then
        BeginUpdate
        cTxt.Value = FormatValue(cSpin.Value)
        Value = cSpin.Value
        RaiseEvent Change
        EndUpdate
    End If
End Sub

应用依期設定

Private Sub cTxt_Change()
    Dim n As Long
    If Updating = 0 Then
        n = GetTextValue()
        If cSpin.Value <> n Then
            BeginUpdate
            cSpin.Value = n
            Value = n
            EndUpdate
            RaiseEvent Change
        End If
    End If
End Sub

' chijanzen
(原始) 2003/10/1
' 几眼下介紹怎么样讓Excel檔案有使用依期,範例中央银行使Windows Script"在註冊表上的讀.寫.刪除的用法
' 本範例使用定期設定 0 天,所以檔案只好開啟一次就自動銷毀
' Script 能利用的根鍵值有五個根鍵名稱
HKEY_CURRENT_USER '縮寫 HKCU
HKEY_LOCAL_MACHINE '縮寫 HKLM
HKEY_CLASSES_ROOT '縮寫 HKCR
HKEY_USERS '縮寫 HKEY_USERS
HKEY_CURRENT_CONFIG '縮寫 HKEY_CURRENT_CONFIG

 

Sub CheckFileDate()
Dim Counter As Long, LastOpen As String, Msg As String
If RegRead = "" Then
Term = 0 '範例用 0 天
TermDate = DateSerial(Year(Now), Month(Now), Day(Now)) + Term
MsgBox "本檔案只好使用到" & TermDate & "日" & Chr(13) & "超過期限將自動銷毀"
RegWrite (Term)
Else
If CDate(RegRead) <= Now Then
RegDelete
KillMe
End If
End If
End Sub
Sub KillMe()
Application.DisplayAlerts = False
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close False
End Sub

  (2卡塔 尔(阿拉伯语:قطر‎名为clsLang,代码如下:

Sub RegWrite(Term)
'RegWrite:创立新鍵、將另生龙活虎個值名稱插手現有鍵 (並將值指派給它),或變更現有值名稱的值。
Dim WshShell, bKey
fname = ThisWorkbook.Name
TermDate = DateSerial(Year(Now), Month(Now), Day(Now)) + Term
Regkey = "HKCUchijanzenBudgetDate" & fname
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite Regkey, TermDate, "REG_SZ"
End Sub

Option Explicit

Function RegRead()
'RegRead: 從註冊傳回鍵的值或值名稱
On Error Resume Next
Dim WshShell, bKey
fname = ThisWorkbook.Name
Regkey = "HKCUchijanzenBudgetDate" & fname
Set WshShell = CreateObject("WScript.Shell")
RegRead = WshShell.RegRead(Regkey)
End Function

Private colDict As New Collection
Private bMetric As Boolean

Sub RegDelete()
'RegDelete :從註冊刪除某鍵或它的黄金时代個值(請小心使用)
Dim WshShell, bKey
Regkey = "HKCUchijanzenBudgetDate"
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegDelete Regkey '刪除檔名
End Sub

Private Sub Class_Initialize()
 
     AddString eFormCaption, "Geometric Information"
    AddString eBtnClose, "关闭"
    AddString eBtnCopy, "复制"
    AddString eBtnCreateText, "创立文本"
    AddString eBtnRefresh, "刷新"
    AddString eBtnReset, "清零"
    AddString eCapArea, "面积"
    AddString eCapLength, "长度"
    AddString eCapPerimeter, "周长"
    AddString eCapVolume, "体积"
    AddString eCapDepth, "高度"
    AddString eCapUnits, "单位"
    AddString eCapPrecision, "精度"
    AddString eUnitInch, "in"
    AddString eUnitMM, "mm"
    AddString eUnitCM, "cm"
    AddString eUnitM, "m"
    AddString eStrInch, "英寸 (in)"
   
    AddString eStrMM, "毫米 (mm)"
    AddString eStrCM, "厘米 (cm)"
    AddString eStrM, "米 (m)"
    AddString eStrError, "Error"
    AddString eStrNoSelection, "未接受其他图形"
    AddString eStrGroupSelected, "不帮助群组图形,请选拔单个图形"
    AddString eStrInvalidObject, "无效选用"
    AddString eStrCurveOpen, "非闭合图形无法估测计算面积和体量"
    AddString eStrMultipathCurve, "组合图形相当的小概测算面积和体量"
End Sub

图片 25

Private Sub AddString(ByVal eId As ELangStringID, ByVal s As String)
    Dim tPair As New clsLangPair
    tPair.eId = eId
    tPair.sDef = s
    colDict.Add tPair
End Sub

防止 Excel 關閉

Public Function GetString(ByVal eId As ELangStringID) As String
    Dim tPair As clsLangPair
    Dim s As String
    s = "Str #" & eId
    For Each tPair In colDict
        If tPair.eId = eId Then
            s = tPair.sDef
            Exit For
        End If
    Next tPair
    GetString = s
End Function

原碼出自 Tek-Tips Forum

Public Function IsMetric() As Boolean
    IsMetric = bMetric
End Function

' Module

 

Option Explicit

  (3卡塔尔名字为clsLangPair,代码如下:

'Set Types
Public Type LUID
LowPart As Long
HighPart As Long
End Type

Option Explicit

Public Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type

Public Enum ELangStringID
    eFormCaption
    eBtnClose
    eBtnCopy
    eBtnCreateText
    eBtnRefresh
    eBtnReset
    eCapArea
    eCapLength
    eCapPerimeter
    eCapVolume
    eCapDepth
    eCapUnits
    eCapPrecision
    eUnitInch
    eUnitMM
    eUnitCM
    eUnitM
    eStrInch
    eStrMM
    eStrCM
    eStrM
    eStrError
    eStrNoSelection
    eStrGroupSelected
    eStrInvalidObject
    eStrCurveOpen
    eStrMultipathCurve
End Enum

Public Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(1) As LUID_AND_ATTRIBUTES
End Type

Public eId As ELangStringID
Public sDef As String

' Declare API functions.
Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, _
ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" _
(ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, _
ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength _
As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long

    今后全方位编写达成,按F5键运营吧,选中图形,点击程序中“刷新”,“面积”,“体积”等数据立马呈现出来,程序运维效果如下图:

' Set Set ShutDown Privilege Constants
Public Const TOKEN_ADJUST_PRIVILEGES = &H20
Public Const TOKEN_QUERY = &H8
Public Const SE_PRIVILEGE_ENABLED = &H2

 图片 26

Public Sub SetShutDownPrivilege()
Dim Phndl As Long, Thndl As Long
Dim MyLUID As LUID
Dim MyPriv As TOKEN_PRIVILEGES, MyNewPriv As TOKEN_PRIVILEGES

Phndl = GetCurrentProcess()
OpenProcessToken Phndl, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, Thndl
LookupPrivilegeValue "", "SeShutdownPrivilege", MyLUID
MyPriv.PrivilegeCount = 1
MyPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
MyPriv.Privileges(0).pLuid = MyLUID
' Now to set shutdown privilege for my app
AdjustTokenPrivileges Thndl, False, MyPriv, 4 + (12 * MyPriv.PrivilegeCount), MyNewPriv, 4 + (12 * MyNewPriv.PrivilegeCount)

End Sub

' ThisWorkbook

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Dim Msg, Style, Title, Response
Dim MyFlag As Long, Ret As String
'Set ShutDown Constants
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4

' Define message.
Msg = "Do you want to continue ?" _
& vbCr & vbCr & "You are about to exit the excel program." _
& vbCr & vbCr & "You will need to Reboot Computer" _
& vbCr & "to restore the program!"
Style = vbYesNoCancel + vbCritical + vbDefaultButton3 ' Define buttons.
Title = "Exiting Program" ' Define title.
' Display message.
Response = MsgBox(Msg, Style, Title)
'Test the variable Response
Select Case Response
Case vbYes
'Save the file, Force Windows Closed
Me.Save
' Call Exit_Windows
Ret = InputBox("Enter Password", "Password Required")
If Ret = "testing" Then ' 更正你的密碼
Ret = InputBox("Exit Excel or Logoff User" _
& vbCr & " Enter: E or L", "What Action")
Else
MsgBox "Invalid Password", vbCritical, "Wrong Password"
Cancel = False
Exit Sub
End If
If Ret = "E" Or Ret = "e" Then
Application.Quit
Else
If Ret = "L" Or Ret = "l" Then
SetShutDownPrivilege 'Set the shutdown privilege - else reboot will fail
' Always execute a force shutdown if a shutdown is required
MyFlag = EWX_LOGOFF 'LogOff
' Grab the shutdown privilege - else reboot will fail
SetShutDownPrivilege
'Do the required action
Call ExitWindowsEx(MyFlag, 0)
End If
End If
Case vbNo
Worksheets(1).Activate
Cancel = True
Case vbCancel
Cancel = True
Case Else
'Do Nothing
End Select

End Sub

Private Sub Workbook_Open()
On Error Resume Next
'Activate the 1st worksheet using the workbooks worksheet index
Worksheets(1).Activate
'Or If you want to use the actual worksheet name
'Worksheets("Sheet1").Activate
End Sub

内定Computer上运转

'用 F8 逐句推行篮色编码,取值后改善海水绿部份

' ThisWorkBook

Private Declare Function w32_GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Public LoginTime

Private Sub Workbook_Open()
Dim TempUName ' User Name
Dim TempPCName ' PC Name
TempPCName = GetComputerName
TempUName = UserName
If TempPCName <> "PCName01" And TempPCName <> "PCName02" And TempUName <> "BeeBee" _
And TempPCName <> "EMILY" Then
MsgBox "Sorry, This File is for BeeBee ONLY."
Application.Quit
End If
End Sub

Function GetComputerName()
Dim sComputerName As String
Dim lComputerNameLen As Long
Dim lResult As Long
lComputerNameLen = 256
sComputerName = Space(lComputerNameLen)
lResult = w32_GetComputerName(sComputerName, lComputerNameLen)
If lResult <> 0 Then
GetComputerName = Left(sComputerName, lComputerNameLen)
Else
GetComputerName = "Unknown"
End If
End Function

Function UserName() As String
Dim Buffer As String * 100
Dim BuffLen As Long
BuffLen = 100
GetUserName Buffer, BuffLen
UserName = Left(Buffer, BuffLen - 1)
End Function

能够监察和控制删除行及列吗

' Module

Option Explicit

'// Worksheet RowColumn Deleted Event
'// This is NOT a real event but just hack the command button.
'// You can know when the rows or the columns was deleted by user's opelation.

Sub EventHack() ' 试行监督程序
AssignMacro "JudgeRng"
End Sub
Sub EventReset() ' 撤除监察和控制程序
AssignMacro ""
End Sub

Private Sub AssignMacro(ByVal strProc As String)
Dim lngId As Long
Dim CtrlCbc As CommandBarControl
Dim CtrlCbcRet As CommandBarControls
Dim arrIdNum As Variant

'// 293=Delete menu of the right click on row
'// 294=Delete menu of the right click on column
'// 293=Delete menu of the Edit of main menu
arrIdNum = Array(293, 294, 478)

For lngId = LBound(arrIdNum) To UBound(arrIdNum)
Set CtrlCbcRet = CommandBars.FindControls(ID:=arrIdNum(lngId))
For Each CtrlCbc In CtrlCbcRet
CtrlCbc.OnAction = strProc
Next
Set CtrlCbcRet = Nothing
Next
End Sub

Private Sub JudgeRng()
If Not TypeOf Selection Is Range Then Exit Sub
With Selection
If .Address = .EntireRow.Address Then
Call DelExecute("Row:" & .Row, xlUp)
ElseIf .Address = .EntireColumn.Address Then
Call DelExecute("Column:" & .Column, xlToLeft)
Else
Application.Dialogs(xlDialogEditDelete).Show
End If
End With
End Sub

Private Sub DelExecute(ByVal str, ByVal lngDerec As Long)
MsgBox "deleted:" & str
Selection.Delete lngDerec
End Sub

图片 27

测量试验 WorkBook 是还是不是已张开

Sub IsWorkBookOpen() Dim wBook As Workbook On Error Resume Next Set wBook = Workbooks("Book180.xls") If wBook Is Nothing Then MsgBox "Workbook is not open" Set wBook = Nothing On Error GoTo 0 Else MsgBox "Yes it is open" Set wBook = Nothing On Error GoTo 0 End If End Sub

图片 28

试问怎么不转移activecell之下将某意气风发储存格展现于左上角
ActiveCell.Select ActiveWindow.ScrollRow = ActiveCell.Row ActiveWindow.ScrollColumn = ActiveCell.Column

Application.Goto ActiveCell, True

图片 29

如何在 VBA 内执行 Add-in 函数

AddIns("VBA 解析工具箱").Installed = True Range("B1") = Application.Evaluate("=Weeknum(now()-7, 2)") AddIns("VBA 剖析工具箱").Installed = True Workdays = Application.Evaluate("=NetWorkdays(DATE(二〇〇一,1,1) ,DATE(2000,12,31))")

Application.Run("ATPVBAEN.xla!Weeknum", Now(), 2)

图片 30

什么样禁绝修正工作表名称

简单易行例子

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveSheet.Name <> "Sheet1" Then ActiveSheet.Name = "Sheet1" End If End Sub

详尽例子 请仿效【取缔更正专业表名称 Chijanzen】

检验EXCEL建即刻间

Sub CreateDate() On Error Resume Next rw = 1 Worksheets(1).Activate For Each p In ActiveWorkbook.BuiltinDocumentProperties Cells(rw, 1).Value = p.Name Cells(rw, 2).Value = ActiveWorkbook.BuiltinDocumentProperties(p.Name) rw = rw + 1 Next MsgBox ActiveWorkbook.BuiltinDocumentProperties("Creation date") End Sub

Rename CodeName

图片 31点击浏览该公文

图片 32

钦点计算机上运营 19/F

能够监察和控制删除行及列吗 20/F

列出凡工作薄的 VBA 21/F

vba 程式碼(代碼)是或不是限定容积不足超過 64K 节制嗎 23/F

找格式化的顏色 ( Font 及 Interior) 请参考 找格式化的顏色 ( Font 及 Interior)

有未有法子在EXCEL的做事表里插入一张会动的gif 动漫

请参照他事他说加以侦查(向我们推荐叁个方可在SHEET中选用的gif动画插件)

请参照他事他说加以调查(不用控件也来呈现GIF动漫)

哪些风华正茂开垦工作簿,关闭全体专业表,剩 sheet1 为运动工作表

请参考
点击浏览该文件 , 用神速键 CRTL s 可调换下大器晚成页,未来唯有三页(能够增添)

如何另存文件时不保留文件的宏

请参考 (在背景作業中另存新檔 chijanzen)

搜索自定范围名称左上、左下、右上及右下地址

请参考 图片 33点击浏览该公文

请教怎么着在单元格里拿到页码和总页数

请参照他事他说加以考察(请教怎样在单元格里获取页码和总页数)

加長 驗證 的長度及寬度

请参考 加長 驗證 的長度及寬度

怎么着改革列表框下拉的书体魄式

Excel 本身自帶的驗證下拉列表是沒有這功效,可用 Combox 情势,請參考附属类小构件

图片 34点击浏览该公文

请问全屏显示后,怎样不突显“关闭全屏展现”工具栏

Sub hidebar() ' chijanzen Application.CommandBars(1).Enabled = False Application.DisplayFullScreen = True Application.CommandBars("Full Screen").Visible = False With ActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub Sub unhidebar() Application.CommandBars(1).Enabled = True Application.DisplayFullScreen = False With ActiveWindow .DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True End With End Sub

如何隐蔽windows上边包车型地铁职分栏 请参见【掩盖职务栏】

能够在不影响活页薄意况下显得时间呢

请参见【在工具列新扩大1个常驻的电子石英钟Chijanzen】

请参考 Ivan F Moala 图片 35点击浏览该公文

何以判别空专门的学业表?并机关删除

If IsEmpty(ActiveSheet.UsedRange) And ActiveSheet.Shapes.Count = 0 Then ActiveSheet.Delete

版权声明:本文由大奖888-www.88pt88.com-大奖888官网登录发布于网络办公,转载请注明出处:2、为窗体编写VBA代码,很難跟進