fanjy ![]() ![]() 版主 ![]() ![]() ![]() ![]() ![]()
| 2樓 大 中 小 發(fā)表于 2006-8-2 00:03 只看該作者 問(wèn)題2:如何禁用用戶(hù)窗體的關(guān)閉按鈕? Public OrgWB As Workbook ![]()
|
|
VBA編程問(wèn)答(第1輯)VBA編程問(wèn)答 附件
| |
|
fanjy ![]() ![]() 版主 ![]() ![]() ![]() ![]() ![]()
| 2樓 大 中 小 發(fā)表于 2006-8-2 00:03 只看該作者 問(wèn)題2:如何禁用用戶(hù)窗體的關(guān)閉按鈕? Public OrgWB As Workbook ![]()
|
|
fanjy ![]() ![]() 版主 ![]() ![]() ![]() ![]() ![]()
| 3樓 大 中 小 發(fā)表于 2006-8-2 00:05 只看該作者 問(wèn)題4:如何將同一文件夾中的多個(gè)文本文件讀入到工作簿中? 解答:通常,我們所看到的例子都是在工作簿中讀入一個(gè)文本文件中的內(nèi)容。假設(shè)有幾個(gè)文本文件,我們把它們放在與工作簿相同的文件夾中,那么,現(xiàn)在如何在該工作簿中一次性讀取這幾個(gè)文本文件的內(nèi)容。下面的程序演示了上述過(guò)程,示例工作簿附后,其中源數(shù)據(jù)引用了lichaobin網(wǎng)友在他的提問(wèn)貼中所附的數(shù)據(jù)。 分兩種情況: (一)所讀入的文本文件總行數(shù)小于65536行,您可以使用以下代碼。 ‘************************************************** Sub Sample1() Dim n As Long, a(), ff As Integer, txt As String, myDir As String, x Dim myF As String, i As Long myDir = ThisWorkbook.Path & Application.PathSeparator myF = Dir(myDir & "*.txt") Do While myF <> "" ff = FreeFile Open myDir & myF For Input As #ff Do While Not EOF(ff) Line Input #ff, txt x = Split(txt, "|") n = n + 1 ReDim Preserve a(1 To n) a(n) = x Loop Close #ff myF = Dir() Loop Cells.Clear With ThisWorkbook.Worksheets("Sheet1").Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With End Sub ‘************************************************** (二)所讀入的文本文件總行數(shù)大于65536行,您可以使用以下代碼。其中使用了一個(gè)變量t和一個(gè)判斷語(yǔ)句,當(dāng)多于65536行時(shí),將剩下的數(shù)據(jù)寫(xiě)入另一工作表中。 Sub Sample2() Dim n As Long, a(), ff As Integer, txt As String, myDir As String, x Dim myF As String, i As Long, t As Integer t = 1 myDir = ThisWorkbook.Path & Application.PathSeparator myF = Dir(myDir & "*.txt") Do While myF <> "" ff = FreeFile Open myDir & myF For Input As #ff Do While Not EOF(ff) Line Input #ff, txt x = Split(txt, "|") n = n + 1 ReDim Preserve a(1 To n) a(n) = x If n = 65536 Then With ThisWorkbook.Sheets(t).Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With n = 0: Erase a: t = t + 1 End If Loop Close #ff myF = Dir() Loop If n > 0 Then With ThisWorkbook.Sheets(t).Range("a1") For i = 1 To UBound(a) .Offset(i - 1).Resize(, UBound(a(i)) + 1) = a(i) Next End With End If End Sub 示例文檔見(jiàn)讀取多個(gè)文本文件.rar。 ![]() |
|
fanjy ![]() ![]() 版主 ![]() ![]() ![]() ![]() ![]()
| 4樓 大 中 小 發(fā)表于 2006-8-2 00:07 只看該作者 問(wèn)題5:如何使用VBA刪除所有的空工作表? ![]() =================================================================== 問(wèn)題11:如何將工作簿中其它工作表名導(dǎo)入到指定的工作表中? 解答:本問(wèn)題即將工作簿中除指定的工作表(如名為Name的工作表)外的其它的工作表名導(dǎo)入到指定的工作表中(即Name工作表中)。您可以使用下面的代碼。 ‘************************************************** Sub Test() Dim ws As Worksheet Dim i As Long, j As Long Worksheets("Name").Range("A:A").Clear i = Worksheets("Name").Range("A65536").End(xlUp).Row For Each ws In Worksheets If ws.Name <> "Name" Then Worksheets("Name").Cells(i, 1) = ws.Name i = Worksheets("Name").Range("A65536").End(xlUp).Row + 1 End If Next ws End Sub =================================================================== 問(wèn)題12:如何在單元格中快速輸入帶秒的時(shí)間? 解答:一般,在Excel中快速輸入日期和時(shí)間時(shí),可使用快捷鍵,即按Ctrl+:組合鍵將快速在單元格中輸入當(dāng)前日期,按Ctrl+Shift+:組合鍵將快速在單元格中輸入當(dāng)前時(shí)間,但所顯示的時(shí)間為“小時(shí):分鐘”格式,不會(huì)顯示秒。如果您想顯示“小時(shí):分鐘:秒”這樣的格式的話,可以使用Onkey方法修改快捷鍵的缺省設(shè)置,如下所示,運(yùn)行“設(shè)置快捷鍵”代碼即可。 ‘************************************************** Sub 設(shè)置快捷鍵() Application.OnKey "+^:", "輸入時(shí)間" End Sub ‘************************************************** Sub 恢復(fù)快捷鍵() Application.OnKey "+^:" End Sub ‘************************************************** Sub 輸入時(shí)間() With ActiveCell .Value = Time() .NumberFormat = "hh:mm:ss" End With End Sub 如果您想恢復(fù)快捷鍵的缺省設(shè)置,運(yùn)行“恢復(fù)快捷鍵”過(guò)程。
By fanjy in 2006-8-1 |
聯(lián)系客服
微信登錄中...
請(qǐng)勿關(guān)閉此頁(yè)面