Excel VBA 开发过程中遇到的一些问题,解决方案,持续更新

Excel FAQ


FAQ1

1.若要在64位系统上使用,则必须更新此项目中的代码。请检查并更新Declare语句,然后用PtrSafe属性标记他们

在→Declare后
添加 →PtrSafe
即用PtrSafe标记Declare

2.当选择窗体模式后,工作簿文件打开却无法操作,如何解决?

假设窗体为Demo1
进入窗体:

Application.Visible = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Demo1.Show

显示工作簿:

Application.Visible = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True

上述会遇到的问是:打开了工作簿却无法对工作簿进行任何操作,因为焦点一直处在窗口中
解决办法:

Demo1.Show vbModeless

3.VB中 ME该如何理解?

代码所在的对象,如果是工作表代码就代表该工作表,如果是窗体代码就代表窗体
如果你的代码写在worksheets之下,则me代表这个工作表;
如果代码写在workbook里面则me代表thisworkbook,;
如果代码写在自定义窗体下,则me代表这个窗体。
例如:

Private Sub UserForm_Initialize()
    Me.OptionButton1.Value = True
    Me.OptionButton5.Value = True
    Me.OptionButton8.Value = True
End Sub

4.ListView用法

Sub initListView()
     With ListView1                           '初始化listview
        .ColumnHeaders.Add , , "COUNTIF", 45, lvwColumnLeft
        .ColumnHeaders.Add , , "助力曲线", 45, lvwColumnLeft
        .ColumnHeaders.Add , , "主动回正1", 50, lvwColumnCenter
        .ColumnHeaders.Add , , "主动回正2", 50, lvwColumnCenter
        .ColumnHeaders.Add , , "阻尼补偿", 45, lvwColumnCenter
        .ColumnHeaders.Add , , "高频增益", 45, lvwColumnCenter
        .ColumnHeaders.Add , , "滤波器", 40, lvwColumnCenter
        .ColumnHeaders.Add , , "软止点", 40, lvwColumnCenter
        .ColumnHeaders.Add , , "轮速", 40, lvwColumnCenter
        .ColumnHeaders.Add , , "稳定滤波器", 60, lvwColumnCenter
        .ColumnHeaders.Add , , "转矩阻尼", 45, lvwColumnCenter
        .ColumnHeaders.Add , , "电机控制", 48, lvwColumnCenter
        .View = lvwReport                                    '以报表的格式显示
        .LabelEdit = lvwManual                               '使内容不可编辑
        .FullRowSelect = True                                '允许整行选中
        .Gridlines = True                                    '显示网格线
        .Sorted = True                                       '排序
    End With
End Sub

5.Excel工作簿出现“此工作簿包含一个或多个可能不安全的外部源的链接”,请问怎么取消这烦人的提示?

首先出现该现象的原因可能是:复制工作表的时候顺带把所带宏的连接也复制了过来,连接到了另一个工作簿
数据->编辑连接 可以看到所链接的外部文件,那么如何断开呢?
将带有链接的宏删除点,然后再次打开编辑链接,可以看到断开链接可用。
打开EXCEL,依次打开“数据”选项卡——“连接”组——“编辑连接”——启动提示——不显示该警告,但是更新链接(O)

6.在开发窗口过程中遇到了一个现象:当我打开Excel表格后,表格正常进入窗口,通过右上角关闭按钮关闭后,下次打开表格会直接进入表格,而不是进入窗口。如何解决?

其实在点击右上角关闭按钮后,只是单纯的关闭了窗口,此时表格在后台运行,只是不在界面上而已,当你再次打开后会发现直接把表格文件调了出来,那么解决的办法是:重载关闭按钮函数
1.重载-增加退出选项,不能解决问题描述

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Dim Msg As String
   Msg = MsgBox("È·¶¨ÒªÍ˳öÂð?", vbQuestion + vbOKCancel, "Ìáʾ")
   If Msg = vbCancel Then Cancel = True
   'If CloseMode <> 1 Then Cancel = True
End Sub

2.重载-屏蔽关闭按钮,能够解决上述问题,关闭按钮完全被屏蔽(无法退出)

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
 	 If CloseMode <> 1 Then Cancel = True
End Sub

3.搭配-新建函数来实现关闭、退出选项

ThisWorkbook.Close

4.完全屏蔽X按钮(因为我的是x64,所以API声明上我直接加了PtrSafe)

Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_SYSMENU = &H80000

Private Sub UserForm_Initialize()
    Dim hWnd As Long, lStyle As Long
    hWnd = FindWindow(vbNullString, Me.Caption)
    lStyle = GetWindowLong(hWnd, GWL_STYLE)
    SetWindowLong hWnd, GWL_STYLE, lStyle And Not WS_SYSMENU
End Sub

FAQ2

窗体显示textbox控件无法正常显示小数

textbox1= sheets(“sheet1”).range(“a1”).text

FAQ3

vba:有没有能够把textbox.text里面的内容强制转换为数字类型

Dim i As Integer
If IsNumeric(textbox.txt) Then
i=val(textbox.text)
end if

sheets(“sheet1”).range(“a1”).value = val(textbox.text) 但首先要保证是数字

FAQ4

使用Excel+VBA对网页进行操作

With CreateObject("internetexplorer.application")
    .Visible = True
    .Navigate "https://www.baidu.com/s?wd=扯乎"
    '关闭网页
    '.Quit
End With

FAQ5

VBA打开文件选择框、取得文件全路径与文件名

'VBA打开文件选择框、取得文件全路径与文件名
Sub selectExcelfile()
    Dim fileNameObj As Variant
    Dim aFile As Variant                            '数组,提取文件名fileName时使用

     '打开文件对话框返回的文件名,是一个全路径文件名,其值也可能是False,因此类型为Variant
    Dim fullName As String
    Dim fileName As String                         '从FileName中提取的路径名

    Dim i As Integer

    fileNameObj = Application.GetOpenFilename("Excel 文件 (*.xls),*.xls")
    '调用Windows打开文件对话框
    If fileNameObj <> False Then                       '如果未按“取消”键
        aFile = Split(fileNameObj, "\")

        fileName = aFile(UBound(aFile))            '数组的最后一个元素为文件名
        fullName = aFile(0)
        For i = 1 To UBound(aFile)                 '循环合成全路径
            fullName = fullName & "\" & aFile(i)
        Next

    Else
        MsgBox "请选择文件"
        End
    End If
    '得到Excel全路径
    allExcelFullPath = fullName
    '得到Excel文件名
    workbookName = fileName
End Sub

FAQ6

  • 得到A列的最后一个非空单元格:iRow=range("a65536").end(xlup).row

  • 第一列的行数 col = Application.WorksheetFunction.CountA(Columns(1))

FAQ7

QueryTables.Add(Connection后面是文件名怎样使用变量?

试了以下代码,出错。 fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") ActiveSheet.QueryTables.Add(Connection:="TEXT;fileToOpen", Destination:=Range("A1"))

解答:

Connection:="TEXT;" & fileToOpen,

FAQ8

窗体程序运行完成后如何自动关闭,不占用内存?

窗体内有代码,我想实现的功能是当这些代码运行完后,这个窗体自动关闭,这个代码是什么?

  • Me.Hide
  • unload me
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Excel VBA开发是指利用微软Excel软件的Visual Basic for Applications(VBA)来自定义和扩展Excel功能的过程。通过编写VBA代码,可以自动化执行各种Excel任务和操作,以提高工作效率和准确性。 Excel VBA开发的主要优势之一是它的灵活性。通过使用VBA,用户可以针对自己的具体需求编写定制化的功能和宏,从而将Excel从单纯的电子表格工具转变为一个强大的数据处理和分析平台。这意味着用户可以根据自己的需求,完全掌控Excel的各种功能,如自动化生成报告、数据处理和分析、图表制作等。 另一个优势是Excel VBA在可视化方面的支持。通过使用VBA,用户可以自定义用户界面和交互,使Excel工作表更加易于使用和理解。用户可以创建自定义的数据输入表单、自动化报表和图表模板,并为其添加各种用户交互功能,从而提高使用者的体验和工作效率。 Excel VBA也具有良好的集成性。用户可以将VBA代码与其他Office应用程序(如Word和PowerPoint)和外部数据库(如Access和SQL Server)集成,以实现不同应用之间的数据共享和交互。这种集成性使得Excel在企业和业务环境成为一个非常有价值的工具,可以用于处理各种复杂的业务需求和数据分析。 总而言之,Excel VBA开发是一种强大且灵活的工具,可以使用户根据自己的需求自定义和扩展Excel功能。通过编写VBA代码,可以实现自动化处理数据、生成报告、图表制作等各种Excel任务,提高工作效率和准确性,使Excel成为一个具有定制化功能的数据处理和分析平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CDamogu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值