Excel FAQ
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