Labels

_fuxi (75) _IV (146) _misc (5) {610610 (30) algo (1) automatedTrading (8) banking/economy (3) book (14) c++misc (125) c++real (15) c++STL/java_container (7) cppTemplate (1) db (13) DB_tuning (4) deepUnder (1) dotnet (69) eTip (17) excelVBA (12) finance+sys (34) financeMisc (24) financeRisk (2) financeTechMisc (4) financeVol (21) finmath (17) fixedIncome (25) forex (16) IDE (24) invest (1) java (43) latency (4) LinearAlgebra (3) math (30) matlab (24) memoryMgmt (11) metaPrograming (2) MOM (15) msfm (1) murex (4) nofx (11) nosql (3) OO_Design (1) original_content (4) scriptUnixAutosys (19) SOA (7) socket/stream (15) sticky (1) subquery+join (2) swing (32) sybase (6) tech_orphan (12) tech+fin_career (30) telco (11) thread (21) timeSaver (13) tune (10) US_imm (2) US_misc (2) windoz (20) z_algo+dataStructure (4) z_arch (2) z_c#GUI (30) z_career (10) z_career]US^Asia (2) z_careerBig20 (1) z_careerFinanceTech (11) z_FIX (6) z_forex (31) z_hib (2) z_ikm (7) z_inMemDB (3) z_j2ee (10) z_oq (14) z_php (1) z_py (26) z_quant (4) z_skillist (3) z_spr (5)
Showing posts with label excelVBA. Show all posts
Showing posts with label excelVBA. Show all posts

Tuesday, February 4, 2014

MSExcel : quickly freeze header row/col

click the cell on 2nd row 2nd col in a range -> VIEW ribbon -> freezePanes ==> will freeze top row and left-most col

 

Wednesday, January 9, 2013

VBA function call - paren

[[Excel 2007 VBA programmer's reference]] puts it nicely - Please add parentheses if you capture return value. Remove parentheses if you don't capture return value. The syntax rules are not clear, so you might hit compilation error if you disobey the rules.

tenor = Replace(myrange.Cells(1, "F").Value2, "D", "Day")

VBA Range variable - skip delcaration?

Without OptionExplicit, you could omit declaration for most variables.

But for a range variable, better declare it like Dim myRange as Range. If you don't declare, it becomes a Variant, which could fails mysteriously half the times.

VBA Application.VLookup vs Application.WorksheetFunction.VLookup

WorksheetFunction.VLookup throws no-match exception that can't be caught!

Dim pair As Variant
pair = Application.WorksheetFunction.VLookup(Key, haystack, 2, False)
If IsError(pair) Then pair = ""

If you remove "WorksheetFunction", Application.VLookup failure is catchable.

vlookup last arg ("sorted closest match") defaults to TRUE!

The table array can include headers -- does't matter

Tuesday, December 4, 2012

VBA range introspection

Myrange.Column (and Row) is a readonly property of Myrange. Absolute address. Myrange.Column == 2 if "B" is first column of the range.

(It's quite hard to find this tip online!)

Note there's no Cell object in EOM i.e. excel object model. You work with single-cell ranges instead. In VBA lingo, "Cell" or "Cells" are always (part of) property of a range or property of a sheet.

implicit objects in excel object model

In the EOM i.e. excel object model, Fully qualified form is Application.Workbooks("Book1.xlsx").Sheets(1).Range("A3")

* qq[Application. ] is always optional and implicit
* If the workbook you specified is the Active workbook, then qq[Workbooks(....). ] is optional and implicit
* if the Sheets(1) you specified is the Active sheet, then qq[Sheets(1). ] is optional and implicit

These implicits are good for impatient coders, but bad for newbies. For beginners, it's safer to always fully qualify these references.

If your VBA code behaves strangely, you can fully qualify all EOM references. If behaviour changes, then your assumptions of the implicits are questionable.

Eg: After sheetA.copy after.workbook8.sheet(3), the active workbook switches from the parent of sheetA to workbook8. This is very implicit and caught me by surprise.

Thursday, November 29, 2012

simple VBA - copy sheets from Workbook A to B


Sub Btn_Click()
    Dim ws As Worksheet
    Dim targetWB, sourceWB As Workbook
    Set targetWB = ActiveWorkbook
 
    Workbooks.Open Filename:=Range("B1").Text, ReadOnly:=True
    Set sourceWB = ActiveWorkbook
 
    For Each ws In Worksheets
        ws.Copy After:=targetWB.Sheets(targetWB.Sheets.Count)
    Next ws
 
    sourceWB.Close SaveChanges:=False
    targetWB.Activate
End Sub

Saturday, November 17, 2012

VBA export/import

You can export a code "Module" (worksheet? probably no) in the form of a file. You can check in the file.

VBA special looping construct - foreach

foreach can loop through cells in a range

foreach can loop through sheets in a workbook

Can foreach loop through row in a range? Yes. for each aRow in theRange.rows ...

VBA variables lifespan ^ scope


If you dislike perl's strictVars, then skip --

OptionExplicit must be declared in each module. Like perl strictVars. VBE -} menubar -} tools -} options -} editor tab -}RequireVariableDefintion would insert OE in every new module.


--var Scopes
* procedure-scope, where "procedure" also includes functions. Remember the "Locals" window.
* module-scope? shared among procedures within the module. Less popular
* public? global, across modules.
* There might be other scopes but less used. I'd say procedure scope and public are the most used.

--var lifespan is a less commonly used feature.
Look at "staic" variables -- just like C.

When a macro completes, static/module/public variables will keep the residual value whereas procedure variables are destroyed.