cel As Integer, CloseMode As Integer)
If Not TextBox1 = ID Then
ThisWorkbook.Saved = True
ThisWorkbook.Close
End If
SetWindowPos hWndForm, -2, 0&, 0&, 0&, 0&, 3
Application.EnableCancelKey = xlInterrupt
End Sub
如何用API获得当前登录用户
Option Explicit
Private Declare Function GetUserNcom Lib "advapi32.dll" Alias "GetUserNcomA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Sub Get_User_Ncom()
Dim lpBuff As String * 25
Dim ret As Long, UserNcom As String
ret = GetUserNcom(lpBuff, 25)
UserNcom = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
MsgBox UserNcom
End Sub
怎样才能实现在输入重复的数据时自动跳到重复处提示呢
方法1:在数据/有效xìng/自定义中输入此公式: =COUNTIF(A:A,A1)=1当输入相同号码时,会拒绝输入.
方法2:Private Sub Worksheet_Change(ByVal Target As Range)
On Error Rescom Next
If Target.Column = 1 Then
If Target.value <> "" Then
Set c = Sheet1.Range("A1:A" & Target.Offset(-1, 0).Row).Find(Target.value, LookIn:=xlvalue, Lookat:=xlWhole)
If Not c Is Nothing Then
MsgBox "该号码已有了"
c.Select
Target.value = ""
End If
End If
End If
End Sub
用公式表示当前单元格所在行的第一列的值
解答:cells(所在行行号,1).value或者用公式=INDIRECT("a"&ROW())
怎样将列号,转变为对应的字母
如:列号9,对应的字母应该是"I",列号27,对应的字母应该是"AA"。
解答:Function ColumnLetter(ColumnNumber As Integer) As String
If ColumnNumber < 1 Or ColumnNumber > 256 Then
MsgBox "Invalid Column Number"
Exit Function
ElseIf ColumnNumber > 26 Then
ColumnLetter = Chr(Int((ColumnNumber - 1) / 26) + 64) & _
Chr(((ColumnNumber - 1) Mod 26) + 65)
Else
ColumnLetter = Chr(ColumnNumber + 64)
End If
End Function
EXCEL能否按照单元格内文字的颜色排序
EXCEL能否按照单元格内文字的颜色排序,或把相同颜色的行集中到一起显示。
解答:方法一,1.以VBA判斷colorindex,加輔助欄實現;2.不以程式輔助要實現--->不可能。
方法二,不用VBA也可以的,可用get.cell(24) EXCEL宏函数定义名称,辅助列还是需要的。
怎么能让一个加载宏监控所有打开的excel文件
我们可以在thisworkbook_open或sheet1_activate中加入自己的代码从而监视本文件中的各个事件,执行指定的代码。但如果你编写的是一个加载宏,你所要监视的文件就不单单是当前的文件了,而是所有打开的文件。但加载宏在后台运行时,用户可能会新打开或关闭文件等执行各种cāo作,从而可能会出现错误。
为了实现加载宏在后台对所有cāo作进行监控,我把Excel帮助翻个底朝天,终于实现了这种效果。这几天看到有些朋友也存在这中问题,将自己的一点心得拿出来与大家分享。
要实现这种效果,首先要定义一个Application类
在VBA项目中添加一个类模块AppEventCls,进行声明:
Public WithEvents App As Application
这时在代码编辑窗口上面的对象下拉框中就多出了一个新的对象“App”,选中“App”,右边的事件下拉框中可以看到对应的事件“NewWorkbook”,“SheetActivate”等,哈!这就是我们所要的!选中“NewWorkbook”,在代码编辑窗口中出现:
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
End Sub
添加代码:
MsgBox "Hey! You opened a new workbook!"
现在可以执行了吗?噢,还要等一下,我们必须先定义一个属于这个类的对象。
在项目中添加一个新的模块
添加对象的定义
Dim MyApp As New AppEventCls
在自动运行过程中指定对象
Public Sub Auto_Open()
Set MyApp.App = Application
End Sub
将文件存为加载宏,如“ControlApp.xla”,然后就可以欣赏自己的成果了!
关闭此文件,然后加载刚保存的加载宏。打开一个文件试试。
在类模块中的其他事件中加入代码试试,可以看到这个加载宏响应所有文件的事件!
把公式排整齐
公式太长,尤其当使用了许多函数,括号一层迭一层时,公式便会变得难以理解。你可以在适当位置按<Alt>+<Enter>来chā入分列符号,甚至加进空格,把公式排得整整齐齐。
寻找特定档案并以对应的软件开启
可否在 excel 中输入一个 档名,excel 会到预定 path 下的 folder 找出该案并开启呢?
解答1:如果知道具体位置,可这样:
Sub Find_WorkBook()
Dim wb As Workbook
Dim String1, String2, Message, Title, Default As String
Default = "WindRider"
Title = "Find WorkBook"
String1 = InputBox(Message, Title, Default)
String2 = Application.ActiveWorkbook.Path
Set wb = Workbooks.Open(String2 & "\" & String1 & ".xls", False, False)
End Sub
解答2:如果只知道文档会在某个 path 下,但实际位置要 search,可这样:
Sub Find_WorkBook()
On Error Rescom Next
Dim wb As Workbook
Dim String1, String2, Message, Title, Default As String
Default = "OnKey"
Title = "Find WorkBook"
String1 = InputBox(Message, Title, Default)
If String1 = "" Then
Exit Sub
End If
With Application.FileSearch
.NewSearch
.LookIn = "E:\Autos"
.MatchTextExactly = True
.FileType = msoFileTypeExcelWorkbooks
.SearchSubFolders = True
.Filencom = Trim(String1) & ".xls"
If .Execute() > 0 Then
String2 = .FoundFiles(1)