被動提示:輸入錯誤數值時彈出提示訊息盒, 選上格子時提示輸入選項.
主動提示:顯示訊息在附近格子上

做法:
| A | 快速Excel使用技巧 | 最後更新 | |
| 檔案管理 | |||
| 輸入處理 | |||
| 12-04-29 | ||
13-01-20 | |||
| 表格/報表處理 | |||
| 12-05-20 12-10-17 12-10-23 12-10-31 12-10-29 12-10-27 12-10-27 | ||
| B | Excel 公式 | 12-09-30 | |
| C | Excel Barcode運用 | ||
| D | Excel疑難排解 | 12-07-18 | |
| E | VBA 儲物室 | 12-05-03 | |
| F | VBA 與 SQL | 12-06-30 12-07-02 | |
| G | Excel 2010-2013相關 | 12-07-22 12-08-05 12-05-09 | |
| H | SQL 工具箱 | 12-05-03 |
以下介紹的都是一些又小(又老)的技巧或習慣,
一打開Excel時,什至是在Windows預覽,
就可以知道Excel檔裡有些什麼.
而且多數只花數秒時間,但可惜會實行的人比較少.
1. 把游標放在當眼處
通常標題都是放在頂端的行數,
完成改動後按一下CTRL+HOME,就可以把游標放到左上方.
下次打開時就可以立即看到標題
Dim Conn As ADODB.Connection Dim sConnect As String Dim strSqlInstance As String Dim strSqlDB As String Dim strSqlUser As String Dim strSqlPWD As String strSqlInstance = "SERVER_NAME\INSTANCE" 'SQL SERVER實例 strSqlDB = "DATABASE NAME" '數據庫名稱 strSqlUser = "SA" 'SQL實例用戶名 strSqlPWD = "PASSWORD" 'SQL實例用戶密碼 sConnect = "PROVIDER=SQLOLEDB;" sConnect = sConnect & "DATA SOURCE=" & strSqlInstance & ";INITIAL CATALOG=" & strSqlDB & ";" sConnect = sConnect & " User ID=" & strSqlUser & ";Password=" & strSqlPWD & ";" Set Conn = New ADODB.Connection Conn.ConnectionString = sConnect Conn.Open … Conn.Close
sConnect = sConnect & " INTEGRATED SECURITY=sspi;"來取代
sConnect = sConnect & " User ID=" & strSqlUser & ";Password=" & strSqlPWD & ";"
Sub subGetTableValues()
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim intColCounter As Integer
Dim sConnect As String
Dim strSqlInstance As String
Dim strSqlDB As String
Dim strSql As String
strSqlInstance = "SERVER_INSTANCE"
strSqlDB = "database"
sConnect = "PROVIDER=SQLOLEDB;"
sConnect = sConnect & "DATA SOURCE=" & strSqlInstance & ";INITIAL CATALOG=" & strSqlDB & ";"
sConnect = sConnect & " INTEGRATED SECURITY=sspi;"
'Establish connection
Set Conn = New ADODB.Connection
strSql = "SELECT * FROM Information_Schema.tables" 'SQL在這裡定義,可加上 where group by...
With Conn
.ConnectionString = sConnect
.CursorLocation = adUseClient
.Open
.CommandTimeout = 0
Set rs = .Execute(strSql)
End With
Worksheets("Data").Cells.Clear
If rs.RecordCount > 0 Then '如果有數據
'寫出欄名
For intColCounter = 0 To rs.Fields.Count - 1
Worksheets("Data").Range("A1").Offset(0, intColCounter) = rs.Fields(intColCounter).Name
Next
'寫出內容
Worksheets("Data").Range("A2").CopyFromRecordset rs
Else
MsgBox ("找不到數據")
End If
rs.Close
Conn.Close
Set rs = Nothing
Set Conn = Nothing
End Sub
另一個方法可代替CopyFromRecordset,一格一格寫上.
Application.ScreenUpdating = False '先關掉顯示,寫好再補上,可以省"點"時間
Dim intRow as long, intCol as long
intRow = 0
rs.MoveFirst
Do While rs.EOF = False
For intCol = 0 To rs.Fields.Count - 1
Range("A2").Offset(intRow, intCol).Value = rs.Fields(intCol).Value
Next intCol
rs.MoveNext
intRow = intRow + 1
Loop
Application.ScreenUpdating = True
| string input | integer input | integer output |
| abc | 10 | 999 |
SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE usp_test_vba @astring_input varchar(50), @aint_input integer, @aint_output integer output AS set @aint_output = 999 select @astring_input as [string input], @aint_input as [integer input], @aint_output as [integer output] RETURN 777 GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
Dim Conn As ADODB.Connection
Dim ADODBCmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim sConnect As String
Dim intArgOutput As Integer
Dim intReturn As Integer
intArgOutput = 30
spName = "usp_test_vba"
Dim strSqlInstance As String
Dim strSqlDB As String
strSqlInstance = "SQL SERVER INSTANCE"
strSqlDB = "DATABASE NAME"
sConnect = "PROVIDER=SQLOLEDB;"
sConnect = sConnect & "DATA SOURCE=" & strSqlInstance & ";INITIAL CATALOG=" & strSqlDB & ";"
sConnect = sConnect & " INTEGRATED SECURITY=sspi;"
Set Conn = New ADODB.Connection
Conn.ConnectionString = sConnect
Conn.Open
Set ADODBCmd = New ADODB.Command
Conn.CommandTimeout = 0
With ADODBCmd
.ActiveConnection = Conn
.CommandText = spName
.CommandType = adCmdStoredProc
.Parameters.Refresh
.Parameters(1).Value = "abc" '放入第1個參數
.Parameters(2).Value = 5 '放入第2個參數
.Parameters(3).Value = intArgOutput '放入第3個參數
Set rs = .Execute()
intArgOutput = .Parameters(3).Value '回傳第3個參數,經SP處理後數值, 即999
intReturn = .Parameters(0).Value '回傳SP RETURN出來的數值 即777
End With
Worksheets("Data").Cells.Clear
If Not (rs.EOF) Then
For intColCounter = 0 To rs.Fields.Count - 1
Worksheets("Data").Range("A1").Offset(0, intColCounter) = rs.Fields(intColCounter).Name
Next
Worksheets("Data").Range("A2").CopyFromRecordset rs
Else
MsgBox ("沒有回傳表")
End If
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
IV. 拿出儲存程序(SP)結果集, SP上有臨時表 (#TEMP TABLE)的問題SET NOCOUNT ON
Public Function YearStartShort(WhichYear As Integer, WhichWD As Integer) As Date
Dim wd As Integer
Dim NewYear As Date
YearStartShort = DateSerial(WhichYear, 1, 1)
wd = WeekDay(NewYear)
YearStartShort= DateAdd("d", WhichWD - wd + IIf(WhichWD - wd >= 0, 0, 7), NewYear)
End Function
Private Sub Workbook_Open() .... ThisWorkbook.Saved = True End Sub
有沒有試過,當打開一星期前的Excel檔來看時,不知從那裡看起?
又或是,明明是自己加上的公式,看過半天也不知公式是在攪什麼飛機.
以下將會介紹一些方法,可以在Excel裡留些記號. 其他人也可以容易看懂
A 定義名稱A I. 個別定義名稱
公作上很多時候會收到客戶寄來的xls.
看了一眼,除WTF之外,根本想不出什麼來.
(而且,實際上收到的公式不比這個簡單)
其實只要用上定義名稱,公式就可以變得清晰
如下面公式.
數據表通常是 1行+數欄為1組 (簡體版是1列+數行)
輸入的時候,通常會是先輸入1組(藍箭),然後換行輸入第2組(紅箭).
換行時,往往要按幾下方向鍵,或是換手用老鼠點過去.
有那些方法可以更省功夫?以下為大家介紹一下.
除了換行,很多時候數據會是重覆的.
不想用滑鼠點來點去做剪貼,
有些什麼方法可以自定下拉選單,鍵盤拉出來?以下也會為大家介紹一下.
A.換欄(藍箭):TAB鍵
如果在A2輸入"1"然後按ENTER, 選上的會變成A3,而不是B2.
要像藍矢這樣跳到右手面的話,可以按一下鍵盤的TAB鍵
B.換行(紅箭):自動表格/保護
如果想像紅箭這樣一鍵跳到下一行的第1格,可以用以下2種方法
如果在儲存格格式找不到 括號 的表示方式
可以到windows的控制台 > "地區及語言選項”
在"地區及語言選項”裡,地區選項頁,選上 “自訂”
設定一下負數貨幣值格式為有括號的. 然後再重新啟動Excel即可
參考網址:http://www.excelbanter.com/showthread.php?t=182274
本編最後更新:2012-02-21
這裡會放些小書評,大家可以參考參考或提意見.
以外文書為主.本地的實在太少.
本篇會不斷更新,看看我有多少時間看...
值得一看度:為必看
為有興趣又有時間可看看
>2003: 有多個EXCEL版本2003,2007,2010
| 級別 | 書名 | ||
| 用戶:基礎/進階 Excel >2003 | 英 | Microsoft Press Microsoft Excel 2010 Data Analysis and Business Modeling Wayne L. Winston | 有大量操作實作例子,如快捷鍵的實用法,不只是如F1式的說明. |
| 用戶:基礎 Excel 2007 | 英 | Bill Jelen | 介紹EXCEL07新功能為主 |
| 用戶:基礎/進階 Excel 2000,XP,2003 | 中 | 晋身EXCEL高手 鄭皓斌 (已絕版,但可在淘寶找到) | 作者多年雜誌短篇結晶, Array formula等進階的用法也易看易懂, 中文轉 |
| 用戶:基礎 Excel >2007 | 英 | First Look 2010 Microsoft Office-System Katherine Marray | 顧名思義,介紹EXCEL07新功能為主.好處是免費和跟OFFICE發賣日更早出版的. |
| 用戶:基礎/進階 Excel >2000 | 英 | New perspectives on Microsoft Office Excel June Jamrich Parsons, Dan Oja, Roy Ageloff, Partrick Carey | 小弟的EXCEL啟蒙老師, 所有功能(連Solver/Array formula)/基本公式都有詳細介紹. MOS考試書籍中最好的一本 |
| 用戶:VBA Excel >2000 | 英 | VBA For Modelers Albright | 這本是主要的對象是對編程沒有太多接觸的朋友. 全書有兩大部份, 第1部份是給學習基本操作. 第2部份是VBA在運籌學上的應用例子.懂VBA的朋友也可以在這裡學學運籌學. |
最後更新日期 2011-07-17
每次一頁一頁一格一格的去設定格式, 是不是很煩呢?
其實EXCEL提供了一個"樣式"的方法, 可以一次過設定同一類型儲蓄格格式.
而且是個工作簿也可一同設定.
如上圖效果,可以一次過設定一組格式.
這樣跟選上所有需要儲蓄格,然後設定格式不就是一樣嗎?
如果只設定一次,其實是沒有分別的.
但是,如果要做多次改動,用樣式的方法, 第2次改動時, 就不用再慢慢選上格子.
這個方法好像都沒有一個正式的名稱.唯有取其義自創一個.![]()
A. 同一時間修改多個工作頁
當用EXCEL弄表格的時候,我們可以把同一類表格收集到同一個工作簿內
如下圖,除少量內容有分別,框架都是一樣的.
但是,當要改動格式的話,是不是要一頁一頁去改呢?