在→Declare后
添加 →PtrSafe
即用PtrSafe标记Declare
假设窗体为Demo1
进入窗体:
Application.Visible = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Demo1.Show
显示工作簿:
Application.Visible = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
上述会遇到的问是:打开了工作簿却无法对工作簿进行任何操作,因为焦点一直处在窗口中
解决办法:
Demo1.Show vbModeless
代码所在的对象,如果是工作表代码就代表该工作表,如果是窗体代码就代表窗体
如果你的代码写在worksheets之下,则me代表这个工作表;
如果代码写在workbook里面则me代表thisworkbook,;
如果代码写在自定义窗体下,则me代表这个窗体。
例如:
Private Sub UserForm_Initialize()
Me.OptionButton1.Value = True
Me.OptionButton5.Value = True
Me.OptionButton8.Value = True
End Sub
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
首先出现该现象的原因可能是:复制工作表的时候顺带把所带宏的连接也复制了过来,连接到了另一个工作簿
数据->编辑连接 可以看到所链接的外部文件,那么如何断开呢?
将带有链接的宏删除点,然后再次打开编辑链接,可以看到断开链接可用。
打开EXCEL,依次打开“数据”选项卡——“连接”组——“编辑连接”——启动提示——不显示该警告,但是更新链接(O)
其实在点击右上角关闭按钮后,只是单纯的关闭了窗口,此时表格在后台运行,只是不在界面上而已,当你再次打开后会发现直接把表格文件调了出来,那么解决的办法是:重载关闭按钮函数
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
窗体显示textbox控件无法正常显示小数
textbox1= sheets(“sheet1”).range(“a1”).text
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) 但首先要保证是数字
使用Excel+VBA对网页进行操作
With CreateObject("internetexplorer.application")
.Visible = True
.Navigate "https://www.baidu.com/s?wd=扯乎"
'关闭网页
'.Quit
End With
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
得到A列的最后一个非空单元格:iRow=range("a65536").end(xlup).row
第一列的行数 col = Application.WorksheetFunction.CountA(Columns(1))
QueryTables.Add(Connection后面是文件名怎样使用变量?
试了以下代码,出错。 fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") ActiveSheet.QueryTables.Add(Connection:="TEXT;fileToOpen", Destination:=Range("A1"))
解答:
Connection:="TEXT;" & fileToOpen,
窗体程序运行完成后如何自动关闭,不占用内存?
窗体内有代码,我想实现的功能是当这些代码运行完后,这个窗体自动关闭,这个代码是什么?
Me.Hideunload me