按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
end sub
如何设定文本框的输入属性
我在excel 中放置了一个文本框〃textbox〃,如何设定该文本框的属性只能是数值,例如设定excel
单元格为货币一样。
解答 1:
Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms。ReturnInteger)
If KeyAscii 《 48 Or KeyAscii 》 57 Then
MsgBox 〃必须输入数字〃; vbExclamation; 〃Warning!〃
SendKeys (〃{backspace}〃)
End If
End Sub
这是我程序中的例子
解答 2 :能在 CHANG 事件中用 isnumeric()函数判断是否是数值,在 exit 事件中用 format()函
数将数值转换成货币格式。
442
…………………………………………………………Page 443……………………………………………………………
一个处理文本排序的自定义函数
下面是一个处理文本排序的自定义函数(数组),红字部分本人不太明白,为什么要用 Trans
pose 转换?请高手指点。
Function SORTED(rng; Optional ascending) As Variant
Dim SortedData() As Variant
Dim CellCount As Long
Dim Temp As Variant; i As Long; j As Long
CellCount = rng。Count
ReDim SortedData(1 To CellCount)
If IsMissing(ascending) Then ascending = True
If rng。Columns。Count 》 1 Then
SORTED = CVErr(xlErrvalue)
Exit Function
End If
For i = 1 To CellCount
SortedData(i) = rng(i)
If TypeName(SortedData(i)) = 〃Empty〃 Then SortedData(i) = 〃〃
Next i
On Error Resume Next
For i = 1 To CellCount
For j = i + 1 To CellCount
If SortedData(j) 〃〃 Then
If ascending Then
If SortedData(i) 》 SortedData(j) Then
Temp = SortedData(j)
SortedData(j) = SortedData(i)
SortedData(i) = Temp
End If
Else
If SortedData(i) 《 SortedData(j) Then
Temp = SortedData(j)
SortedData(j) = SortedData(i)
SortedData(i) = Temp
End If
End If
End If
Next j
Next i
SORTED = Application。Transpose(SortedData)
End Function
解答:数组分为两种:
443
…………………………………………………………Page 444……………………………………………………………
1 、横数组 用单元格比喻是 A1: D1 (其实单元格就可理解成数组)
2 、竖数组 用单元格比喻是 A1: A4
在过程中形成的数组都为横数组 如 SortedData
Transpose 函数能将 横数组 转为 竖数组;竖数组 转为 横数组
SORTED 函数返回的都是竖数组,这样就可把数据方便的放入一列内或 listbox bobox 等内
只是个人理解,供参考
如何在在公式内加插批注
储存格公式的备注参考可用多种方式表示,如储存格本身的备注,在公式旁的储存格用文字表
示、、、等等。现在为大家介绍一个小技巧,就是用 N 函数在公式内加插批注,N 函数的详细
请参考电子表格的帮助。
这个小技巧主要利用 N(其它),传回 0 的特色。文字属于其它,例子如下: B6 ,C6 及 D6 是
三个区域的个别统计数字,H20 则是他们的总和,平常公式是:=SUM(B6:D6)。在公式内加插
批注可以这样表达: =SUM(B6:D6) + N(〃区域 1 , 区域 2 及 区域 3 的总数〃)
这条语句怎么写
不保存直接关闭当前的工作簿的VBA 语句及不保存直接关闭EXCEL 窗口(关闭所有的工作簿)
的VBA 语句
解答:1、Workbooks(〃BOOK1。XLS〃)。Close SaveChanges:=False
2 、不保存直接关闭EXCEL 窗口(关闭所有的工作簿) 的VBA 语句:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application。DisplayAlerts = False
Application。Quit
End Sub
有没有语法可一次把 textbox 的值全改为
userform 里有 20 个 textbox 和 2 个 bobox; 有没有语法可一次把 textbox 的值全改为〃〃?
解答:新增 一个 mandButton1
Private Sub mandButton1_Click()
Dim obj As Object
444
…………………………………………………………Page 445……………………………………………………………
For Each obj In Controls
If TypeOf obj Is MSforms。TextBox Then
obj = 〃〃
End If
Next obj
End Sub
又问:我是要在 userform_initialize 里设定却不想一个一个 textbox 设为〃〃,想请教一下怎样做较
有效率
解答:假设您没变更 Textbox 之预设名称,在 Initialize 事件中加入
Dim obj As Object
For Each obj In Controls
If obj。Name Like 〃Textbox*〃 Then obj = 〃〃
Next obj
怎样用程序删除工作表中的空行
空行就是表示这行的每一个单元格都是空白的,所以可以判断只要某一特定单元格为空,则删
除该单元格所在的行,代码如下:
Sub d()
For i = 1 To 100
If Cells(i; 1) = 〃〃 Then
Rows(i)。Delete
End If
Next
End Sub
上面的程序通用性差,遇到数据分布不规则的情况就不适用了,最好改成如下代码:
' For 100 Rows
For i = 100 To 1 Step …1
If WorksheetFunction。CountA(Rows(i)) = 0 Then
Rows(i)。EntireRow。Delete
End If
Next i
445
…………………………………………………………Page 446……………………………………………………………
有没有函数可以直接查找某列(行)数据中是否包括某单值
解答: 用 match() 和 countif() 都可以。如在 A 列中查找是否有 10 存在,公式:
=IF(I