2012年4月27日 星期五

2012年4月26日 星期四

Windows 螢幕截圖


Screenshoter (下載)    小巧、免安裝、按一下、自動存檔、JPG 格式、螢幕截圖

下載程式解壓縮後執行此程式

在要截取的螢幕按下 Screenshot, 之後即可在桌面上看到螢幕的截圖檔案

2012年4月22日 星期日

xterm 中文


xterm -> bitmap font

$ xfontsel

To use TrueType fonts in your xterm windows, you need to set XTerm*faceSize and XTerm*faceName attributes in your ~/.Xresource file.



xterm 用滑鼠選到的就複製了,可以按中鍵直接貼上,或在其他地方 Ctrl+V 貼上




Reference :
重新认识xterm及我的配置详解 - 查看主题 • Ubuntu中文论坛
xterm default fonts (TrueType)

2012年4月18日 星期三

2012年4月17日 星期二

VBA OptionButton 群組

VBA OptionButton 群組的話不是用 Tag,  而是 GroupName

VBA 字典 (Dictionary)

Dim datas
Set datas = CreateObject("Scripting.Dictionary")

datas.add "Name", "QQQ"
datas.add "Birthday", "1911/1/1"

For Each key In datas.KEYS
    MsgBox key & "=>" & datas.Item(key)
Next




Reference :
VBA中Dictionary对象使用小结 - 日积月累 - 博客大巴
TechBookReport - VBA Dictionary Object

VBA Function return Dictionary

Set datas = myfunc
MsgBox TypeName(datas)

Sub Function myfunc()
    Dim D
    Set D = CreateObject("Scripting.Dictionary")
    D.Add "Name", "xxx"
    D.Add "Birthday", "1911/1/1"

    Set myfunc = D
End Function




Reference :
Using the Dictionary Class in VBA
vba: return dictionary from function
vba: return dictionary from function
Dictionary物件的認識與應用

Debian sid 沒有 xorg.con

(1) 生成 xorg.org 後修改
# Xorg -configure
# vi /root/xorg.conf.new
# mv /root/xorg.conf.new /etc/X11/xorg.conf
# startx 

(2) 針對單獨設備寫設定檔
# cd /etc/xorg.conf.d/


Reference :
debian sid 现在没有xorg.conf了

/etc/X11/xorg.conf 解析度設定

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        Device          "Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Virtual         1440 900
        EndSubSection
EndSection  





Reference :
修改/etc/X11/xorg.conf 调整分辨率为1024 768 - chinacloud - 博客园
Ubuntu 9.10 雙螢幕設定 xorg.conf - 看板 Linux - 批踢踢實業坊

VBA SQL last insert ID

VBA typeof 物件型態


MsgBox TypeName(the_object)

2012年4月16日 星期一

引數不為選擇性 (optional)

Function Test2(Optional V As Variant, Optional L As Long = -1) As String
...
End Function




Reference :
Optional Parameters To Procedures

VBA ADODB.Recordset to array

Public Function staffIndex(Optional staffName As String)   
    ' 搜尋使用者資料
    Set myDB = New clsADODBopen
    sqlStr = "SELECT 識別碼, 姓名 FROM staffs WHERE 姓名 LIKE '%" + staffName + "%' ORDER BY 識別碼"
    myDB.subOpen sqlStr

    staffIndex = myDB.theRST.GetRows(myDB.theRST.RecordCount)
End Function

VBA 二維陣列 2-Dimensional Array

Sub SampleArray()
    Dim Data(1 To 3, 1 To 4)
    Dim Sum As Single
    Dim iRow As Integer, iCol As Integer

    For iRow = LBound(Data, 1) To UBound(Data, 1)
        For iCol = LBound(Data, 2) To UBound(Data, 2)
            Data(iRow, iCol) = Cells(iRow, iCol)
            MsgBox "Data(" & iRow & "," & iCol & ") = " & Data(iRow, iCol)
            Sum = Sum + Data(iRow, iCol)
            MsgBox "Sum = " & Sum
        Next iCol
    Next iRow

    MsgBox "The final Sum = " & Sum
End Sub




Reference :
2-Dimensional Array - Excel 2003 VBA
2 dimensional array...Please help!

VBA switch ... case

switch ... case -> Select Case

Dim Number
Number = 8 ' Initialize variable.

Select Case Number ' Evaluate Number.
     Case 1 To 5 ' Number between 1 and 5, inclusive.
        Debug.Print "Between 1 and 5"
    ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8 ' Number between 6 and 8.
        Debug.Print "Between 6 and 8"
    Case 9 To 10 ' Number is 9 or 10.
        Debug.Print "Greater than 8"
    Case Else ' Other values.
        Debug.Print "Not between 1 and 10"
End Select




Reference :

VBA 驗證模組

Validate Integer、Number、Date、Text、AlphaNumeric




Reference :
VBA Validation Module



VBA 字串取代 replace string

num2week = Replace(numStr, "1", "Mon")

VBA 分割字串 split string

Sub SplitValue()
    Dim avarSplit As Variant
    Dim intIndex As Integer
    avarSplit = Split(Range("A1").Value, ",")
    For intIndex = LBound(avarSplit) To UBound(avarSplit)
        MsgBox "Item " & intIndex & " is " & avarSplit(intIndex) & _
        " which is " & Len(avarSplit(intIndex)) & " characters long", vbInformation
    Next
End Sub 




Reference :

Split Function (Visual Basic)
String Split in vba

2012年4月15日 星期日

VBA 擷取字串 sub string

MsgBox MID( "Lloveba ",2,4)

MsgBox MID( "abcd,", 1, Len("abcd,") - 1)

VBA 表列出 list CheckBox

CheckBox 全選範例
For I = 1 To 7
    Me.Controls("DayCheckBox" & I).value = True
Next

CheckBox Tag 方式
Dim ctrl As Control

For Each ctrl In Me.Controls
    If TypeName(ctrl) = "CheckBox" Then
        If ctrl.Tag = "Time" Then
            MsgBox ctrl.Name & " = " & ctrl.value
        End If
    End If
Next

Set ctrl = Nothing




Reference :
Loop through checkboxes
Excel VBA: Loop Through Controls on a UserForm. Textbox, ComboBox, CheckBox etc
如何抓取動態產生的控制項(ex.textbox)

2012年4月14日 星期六

2012年4月13日 星期五

2012年4月12日 星期四

Moodle [[unzipfileserror]]

解壓縮檔案時出現 [[unzipfileserror]]

1.不支援中文檔名

Windows 連結網路印表機

控制台 -> 印表機和傳真 -> 新增印表機 -> 下一步 -> 連結到這台電腦的本機印表機 (取消 v 自動偵測並安裝我的隨插即用印表機) -> 下一步 -> 建立新的連接埠 (Standard TCP/IP Port) -> 下一步 -> 下一步 -> 印表機名稱或 IP 位址 (192.168.xx.xx) -> 下一步 -> 標準 -> 下一步 -> 完成 -> 安裝驅動程式 -> 從磁片安裝  -> 瀏覽 (尋找驅動程式包裡的 .inf 檔) -> 確定 -> 下一步 -> 下一步 -> 下一步 ->完成

2012年4月11日 星期三

VBA ListBox ColumnWidths

ListBox.ColumnCount = 3
ListBox.ColumnWidths = "50;150;100" 




Reference :
Changing Listbox Columnwidths
How to: Change the Column Widths of a Multi-Column List Box

牛肉蓋飯

切絲海苔

高湯
醬油
米酒
味醂
糖 (少)
洋蔥切細
蘿蔔絲
牛肉片


VBA Bind Keys (keybinding) in a Form

(1) 雖然有 Form_KeyDown 事件, 但若 Form 上面有其他按鈕或輸入框, 則 Form_KeyDown 事件不會被觸發到
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
         Case vbKeyW
             BackColor = QBColor(15)
         Case vbKeyF
             ForeColor = QBColor(5)
         Case vbKeyM
             MsgBox "Added more keys...", vbInformation
    End Select
End Sub

(2) 另外一種則是在 UserForm_Activate 事件中持續使用 GetAsyncKeyState 捕獲 keybord state, 但 VBA 內建沒有延遲函式 (Sleep、Delay、Timer 等), 則持續迴圈會耗用 CPU, 或設法加入 Sleep 函式 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub UserForm_Activate()
    Do
        If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyA) Then MsgBox "你按了Ctrl+A"
    DoEvents ' 避免持續占用 CPU
    If s = True Then Exit Do
    Loop
End Sub

(3) 最後的方法則是使用在表單載入時 UserForm_Initialize 執行系統函式 SetTimer


模組  moduleKeyBinding
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Public Function keyCapture()
    ' 偵測是否按下 Ctrl + d
    If GetAsyncKeyState(vbKeyControl) And GetAsyncKeyState(vbKeyD) Then
        MsgBox "進入 Develop 模式"
   
        Application.Visible = True
    End If
End Function
表單 TheMainMenuForm
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Sub UserForm_Initialize()
    SetTimer 0, 1, 1000, AddressOf moduleKeyBinding.keyCapture
End Sub




Reference :
How do i bind a key?
[VB]&[VBA] 如果判別是否按了ctrl+a的鍵?
[VBA] 使用Timer
完整功能的VBA Timer类

VBA Application.Visible = False 後進入 開發人員 編輯

若 VBA 自動執行後設定 Application.Visible = False, 則 Excel  會被隱藏無法進行開發人員編輯

解法:
先開啟 Excel, 停用巨集, 再開啟此 VBA

載入 VBA 後關閉工作表

在 VBA 啟動時將工作表隱藏
Application.Visible = False

VBA 結束後, 工作表並未關閉, VBA 須回到工作表或將整個程式關閉
Private Sub UserForm_Terminate()
    ' 回到工作表
    Application.Visible = True
  
    ' 或將程式關閉
    Application.Quit
End Sub




Reference :
Application.visible = False On Startup

VBA MD5

下載此 Class, 儲存成 MD5.txt, 在物件類別模組中匯入

使用方法
Dim m As New MD5
MsgBox m.DigestStrToHexStr(str)




Reference :
Listing of MD5 Class for Visual Basic

VBA TextBox 密碼 * 號

點擊 TextBox 物件, 顯示物件屬性, 將 PasswordChar 設為 *




Reference :
VBA: Password Textbox

Excel 工作表自動執行 VBA

在 Microsoft Excel 物件 -> ThisWorkbook 中
Private Sub WorkBook_Open()
    TheMainMenu.Show
End Sub

Private Sub WorkBook_BeforeClose(Cancel As Boolean)
    MsgBox "Quit"
End Sub




Reference :
WorkBook_Close() problem - MrExcel Message Board

2012年4月10日 星期二

Inkscape 對齊與分佈

Object -> Align and Distribute (Shift+Ctrl+A)

VBA 錯誤偵測

類似 try ...catch, 在可能發生錯誤的之前指定 ErrorHandler
(1)
On Error Resume Next
N = 1 / 0 ' cause an error

If Err.Number <> 0 Then
     N = 1
End If


 (2)
On Error Goto ErrHandler1:


ErrHandler1:
     ' error handling code

    MsgBox "error."
 
    Resume Next
End Sub





Reference :
Error Handling In VBA

ADODB、ODBC、JDBC






Reference :
ADO与ODBC的区别
JDBC与ODBC的差异分析与应用

VBA 不同表單(Form) 全域變數

轉:

加個 Module 在裡面設的全域變數
Public aaa As String
Public bbb As Integer
所有的Form都可以用aaa,bbb




Reference :
不同form要怎麼互通變數

VBA On Form Load 表單載入事件

Private Sub UserForm_Initialize ()
         DO_SOMETHING
End Sub

Private Sub UserForm_Terminate ()
         DO_SOMETHING
End Sub




Reference :
VBA Form Load

VBA ArrayList

匯入此物件類別模組
http://www.brianweidenbaum.com/wp-content/uploads/2011/12/ArrayList.cls

Public al As ArrayList

Set al = New ArrayList

al.add (str1)

al.add (str2)

MsgBox al.Item (index)




Reference :
VBA ArrayList

VBA ListBox 加入、移除項目

ListBox.AddItem (i)

ListBox.RemoveItem (i)

ListBox.Clear




Reference :
ListBox 控制項
Excel VBA - 實作Listbox項目增減功能


VBA 字串轉數字

v = Val("100 Blah Blah")




Reference :
Convert a String to a Number (Integer)

VBA 計算日期相差天數 (扣掉六日)

DateDiff("d", Before, Today) - (Ceiling((DateDiff("d", Before, Today) - (Format(Today, "w") - 1)) / 7) * 2)

VBA 計算日期相差天數

DateDiff("d", dtmValue1, dtmValue2)



Reference :
DateDiff Function

VBA 取得星期

Format( NOW(), "w" )




Reference :
User-Defined Time/Date Formats for the Format Function

VBA / 無條件進位、四捨五入

Round ()
內建

Ceiling ()
 Public Function Ceiling(ByVal X As Double, Optional ByVal Factor As Double = 1) As Double
    ' X is the value you want to round
    ' is the multiple to which you want to round
    Ceiling = (Int(X / Factor) - (X / Factor - Int(X / Factor) > 0)) * Factor
End Function


Floor ()
 Public Function Floor(ByVal X As Double, Optional ByVal Factor As Double = 1) As Double
    ' X is the value you want to round
    ' is the multiple to which you want to round
    Floor = Int(X / Factor) * Factor
End Function




Reference :
How do I simulate Excel's Ceiling/Floor Functions in VBA?


2012年4月9日 星期一

VBA ForeColor

TextBox1.ForeColor = 329171

TextBox1.ForeColor = &H8000000D

VBA Get Current Path

Application.ActiveWorkbook.Path

Application. ActiveWorkbook.FullName




Reference :
如何在VBA中获得当前EXCEL所在的路径

SQL SELECT 不為空

NULL / NOT NULL
SELECT LastName,FirstName,Address FROM Persons WHERE Address IS NULL




Reference :
SQL NULL Values

查詢運算式 語法錯誤 (少了運算元)

INNER JOIN 語法
SELECT article.aid,article.title,user.username,type.typename FROM (article INNER JOIN user ON article.uid=user.uid) INNER JOIN type ON article.tid=type.tid








Reference :
MySQL JOIN 多表连接_PHP+MySQL数据库教程
inner join 連接多個資料表 - (連接三個數據表的用法)

VBA 關閉表單 / 視窗

Unload Me

2012年4月8日 星期日

VBA 載入、顯示表單

Sub btn1_Click()
    Load the_form
    the_form.Show
End Sub

"找不到方法或資料成員" 時改用如下

Sub btn1_Click()
    UserForms.add("the_form").Show
End Sub




Reference :
VBA: Show or load a form when Excel starts
Excel VBA UserForm Will Not Load Or Show

2012年4月6日 星期五

VBA 連線 Access 資料庫

Private Sub CommandButton1_Click()

' mdb 資料庫連線
Dim dbcn As ADODB.Connection
Set dbcn = New ADODB.Connection
dbcn.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=library.mdb;"
dbcn.Open

' SQL
sqlstr = "select id, 姓名 from users"

' RecordSet
Dim rs1 As ADODB.Recordset
Set rs1 = New ADODB.Recordset

' 執行 SQL
rs1.Open sqlstr, dbcn

' 視窗顯示 Record 內容
If Not rs1.EOF Then
rs1.MoveFirst
    While Not rs1.EOF
        MsgBox CStr(rs1.Fields(0)) + " -> " + CStr(rs1.Fields(1))
        rs1.MoveNext
    Wend
End If

' 關閉資料庫連線
rs1.Close
dbcn.Close

End Sub



Reference :
Access資料庫的連結
Excel VBA 使用 ADO語法連結Access資料庫常用方法
Excel VBA連結資料庫系統---Access資料庫

 

 

MsgBox 型態不符合

為變數形態問題, 須使用變數型態轉換相關函式

CStr
Cint
...




Reference :
轉換型態相關函數

FROM 子句中的語法錯誤

在撰寫 VBA 時, SQL 命令部分報錯, 原來是表格名稱用了 user 為關鍵字

Excel VBA 開發人員 & 啟用巨集

Excel 2007
顯示開發人員索引標籤
Office 圖示 -> Excel 選項 -> 常用 -> 在功能區顯示「開發人員」索引標籤

啟用巨集
Office 圖示 -> Excel 選項 -> 信任中心 -> 信任中心設定 -> 巨集設定 -> 啟用所有巨集

Excel 2010
顯示開發人員索引標籤
檔案 -> 自訂功能區 -> 開發人員打勾

啟用巨集
檔案 -> 選項 -> 信任中心 -> 信任中心設定 -> 巨集設定 -> 啟用所有巨集



Reference :
Excel VBA
[VBA] Excel 2007 啟用巨集 / Enable Marco
設定顯示開發人員索引標籤(Excel 2007/2010)或Visual Basic工具列(Excel 2003)

2012年4月5日 星期四

Windows XP 更改序號

Start -> Run -> oobe/msoobe /a

是,我想要打電話 ...... 啟用 Windows

變更產品金鑰




Reference :
更改XP序號

[系統磁碟工具]RemoveWGA - 微軟 WGA 移除器

jenkins


Started by user anonymous
Building in workspace /var/lib/jenkins/jobs/hello/workspace
Checkout:workspace / /var/lib/jenkins/jobs/hello/workspace - hudson.remoting.LocalChannel@c7aaef
Using strategy: Default
Checkout:workspace / /var/lib/jenkins/jobs/hello/workspace - hudson.remoting.LocalChannel@c7aaef
Cloning the remote Git repository
Cloning repository origin
ERROR: Error cloning remote repo 'origin' : Could not clone user@the_remote_host:hello.git
hudson.plugins.git.GitException: Could not clone user@the_remote_host:hello.git
 設定 ssh 免密碼驗證, 並在命令列下以 jenkins 帳號測試
 git clone user@the_remote_host:hello.git
 (另外, 也可以設定 ssh 自動接受憑證)



Caused by: hudson.plugins.git.GitException: Error performing command: git tag -a -f -m Jenkins Build #4 jenkins-hello-4
Command "git tag -a -f -m Jenkins Build #4 jenkins-hello-4" returned status code 128: 
*** Your name cannot be determined from your system services (gecos).

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

$ git config --global user.email "jenkins@localhost"
$ git config --global user.name "jenkins"


ssh 免密碼登入

Client :
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ scp ~/.ssh/authorized_keys user@REMOTE_HOST:.ssh/








Reference :
SSH 免密碼登入

SSH Git Server

Server :
$ mkdir hello.git
$ cd hello.git
$ git --bare init


Client :
$ mkdir hello
$ cd hello
$ git init
$ touch README
$ git add README
$ git commit -m 'first commit'
$ git remote add origin user@REMOTE_SERVER:hello.git
$ git push origin master




Reference :
Debian Linux 架設使用 SSH 存取 的 Git Server | Tsung's Blog

Apache 虛擬主機

# vi /etc/apache2/sites-enabled/000-default
NameVirtualHost 172.20.30.40:81


DocumentRoot /www/example1
ServerName www.example1.com



DocumentRoot /www/example2
ServerName www.example2.org




Reference :
VirtualHost Examples - Apache HTTP Server

IE8 Cookie 設定

工具 -> 網際網路選項 -> 隱私權 -> 設定 -> 進階 -> 複寫自動 Cookie 處理

2012年4月1日 星期日

PowerPoint 內嵌字型

PowerPoint 2007
檔案 -> 另存新檔 -> 工具 -> 儲存選項 -> 在檔案內內嵌字型 -> 內嵌所有字元





Reference :
避免在 PowerPoint 中遺失字型樣式

Moodle 腳色權限設定

網站管理 -> 用戶 -> 權限 -> 定義角色 -> 編輯