The VAIO touchpad

I love VAIO. I have been a VAIO laptop user for at least a decade. When my current 6-year-old VAIO began shutting down due to overheating I figured it was time to get a new one. Yeah, I could replace the heatsink/fan, but I deserve a new one.

I settled on the VAIO Z flip with its powerful Intel Core i7-6567U CPU and strong uni-direction carbon fiber shell.  The design was beautiful.  Everything about it, including the flip mechanism and keyboard, felt solid.

Before I ordered it, I made the decision that I could live without Thunderbolt 3 ports.  Even when I discovered that the VAIO’s fan produced much more noise than, say, a Lenovo Yoga 910 when powering a 4K external monitor I was determined to keep the VAIO.

What killed it for me was the touchpad, the pride and connections of VAIO’s Imai (second to last paragraph) notwithstanding.  There are four main problems with the touchpad:

  1. Surface – The surface of the touchpad is much rougher than any other high-end ultrabook.  This would be fine except that also the static coefficient of friction is larger than the dynamic, so when you need to press hard to perform a drag operation your finger stutters across the pad if moving slowly or precisely.
  2. Thumb rejection – The thumb rejection algorithm is non-existent so if you rest your thumb on the pad to maintain positional awareness it interferes with index-driven cursor movement.  This also may cause the cursor to jump just before clicking with your thumb, therefore causing errors in selection.
    Except for the MacBook, thumb rejection on other ultrabooks is not very advanced, however they do provide a delay of a quarter second or so which results in quite a bit more precision.  The MacBook’s algorithm outstandingly provides thumb rejection for as long as you are using your thumb as a clicker.
  3. Button force – Here again the specs of the VAIO differ greatly from that of other ultrabooks.  The force needed to click the button is far too great.  If you try to use your thumb as a clicker you run into the thumb rejection/interference issue; if you try to use your index finger as a clicker you lose precision due to surface friction and sensitivity – which brings me to VAIO’s last touchpad problem.
  4. Sensitivity – Touchpad tracking is much less smooth on the VAIO than other ultrabooks.  You will find that when attempting to finely position the cursor it will stick then jump, or zigzag, rather than moving smoothly from one position to another.

I spent an embarrassing amount of time in Best Buy comparing the touchpads of the Lenovo 910, Lenovo X1 Carbon, HP Spectre X360, Dell XPS 13, Microsoft Surface Book, and Apple MacBook Pro.  Unfortunately they all performed significantly better than the VAIO.

I really wanted to keep the VAIO so I tried hard to fix the issues.  I applied a 5 mil adhesive Teflon film to the touchpad surface to decrease the friction and fastened a thicker polymer strip to the bottom of the pad to prevent thumb detection.  Unfortunately this increased the sensitivity problem and rendered the pad useless.  (Interestingly this modification completely fixed the Lenovo’s thumb rejection issue while retaining complete functionality of the remainder of its touchpad.)  Also I hoped that the Teflon film would help with the sensitivity issue by distributing the electrical charge from a pointing finger, but it did not help at all; the third and fourth problem could not be fixed with a home solution.

VAIO, I love your engineering.  If you fix the touchpad issue I’ll be back.

Excel Paste Special macro shortcut key for both objects and text

Today is the day I decided I had enough of Excel’s lack of a Paste Special shortcut key.

Pasting Annoyances

There are several ways to Paste Special via the keyboard but all of them involve multiple key press sequences.  This may have been simple enough, but when the source of the copied content is from a source other than Excel the Paste Special dialogue box differs, and the last couple keys in the sequence differ as well.

paste-special-from-excel

Fig. 1 The Excel source Paste Special dialogue

paste-special-from-word

Fig. 2  The Microsoft Word source Paste Special dialogue

To create a shortcut key for a function (that is not represented by a menu button) we must first create a macro for that function.

Macro Errors

A simple macro like:

Sub PasteVal()
    Selection.PasteSpecial Paste:=xlValues
End Sub

works fine if you are copying cells from Excel or objects from Word, Outlook, etc.  If you are copying text, from inside an Excel cell or elsewhere, you will get an error:

run-time-error-1004-pastespecial-method-of-range-class-failed

Fig. 3  Error pasting text from outside Excel into Excel

You may also get this error if you run the macro via the Developer -> Macros dialog box.  So remember to run your macro via the shortcut, which we will create below.

Paste Special Macro

To create a macro that can handle pasting both types of data we can use an error catching routine.  Also, since we now know that running a macro will clear the undo stack, we should include code that will give us some protection from pasting an erroneously.

' Custom data type for undoing
    Type SaveRange
        Val As Variant
        Addr As String
    End Type
    
' Stores info about current selection
    Public OldWorkbook As Workbook
    Public OldSheet As Worksheet
    Public OldSelection() As SaveRange
'----------------------------------------------------------
Sub PasteValues()

' Set shortcut to Cntl+Shift+V, for example
' Works for Outlook and Chrome AND Excel

' Abort if a range isn't selected
    If TypeName(Selection) <> "Range" Then Exit Sub

' The next block of statements
' save the current values for undoing
    ReDim OldSelection(Selection.Count)
    Set OldWorkbook = ActiveWorkbook
    Set OldSheet = ActiveSheet
    i = 0
    For Each cell In Selection
        i = i + 1
        OldSelection(i).Addr = cell.Address
        OldSelection(i).Val = cell.Formula
    Next cell

' Start paste function
    On Error GoTo ValuesFail
    ' Works for Excel and Outlook, but not Chrome
    Selection.PasteSpecial Paste:=xlValues
    ' Specify the Undo Sub
    Application.OnUndo "Undo the macro", "UndoMacro"
    Exit Sub
ValuesFail:
    On Error GoTo TextFail
    ' Works for Outlook and Chrome, but not Excel
    ActiveSheet.PasteSpecial Format:="Text"
    ' Specify the Undo Sub
    Application.OnUndo "Undo the macro", "UndoMacro"
    Exit Sub
TextFail:
    On Error GoTo PasteFail
    ActiveSheet.Paste
    ' Specify the Undo Sub
    Application.OnUndo "Undo the macro", "UndoMacro"
    Exit Sub
PasteFail:
    MsgBox "Complete Failure"
End Sub
'----------------------------------------------------------
Sub UndoMacro()
' Reinstates data in the selected range

' Tell user if a problem occurs
    On Error GoTo Problem

    Application.ScreenUpdating = False

' Make sure the correct workbook and sheet are active
    OldWorkbook.Activate
    OldSheet.Activate

' Restore the saved information
    For i = 1 To UBound(OldSelection)
        Range(OldSelection(i).Addr).Formula = OldSelection(i).Val
    Next i
    Exit Sub

' Error handler
Problem:
    MsgBox "Can't undo macro"
End Sub
'----------------------------------------------------------
Sub RevertFile()
' From http://www.excelforum.com/showthread.php?t=491103

    wkname = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
    ActiveWorkbook.Close Savechanges:=False
    Workbooks.Open Filename:=wkname

End Sub

The code above will allow you not only to paste both text and objects into Excel, it will also allow you to undo changes to data in the range selected for pasting.  Even if you erroneously paste over needed data, you can run the RevertFile macro to reload your worksheet to its last saved state.

In case you would like to experiment more with what code works with what sources you can use the code below.

Sub PasteOutlook()

' Set shortcut to Cntl+Shift+B, for example
' Works for Excel and Outlook, but not Chrome

    Selection.PasteSpecial Paste:=xlValues
End Sub
'----------------------------------------------------------
Sub PasteExcelOnly()

' Set shortcut to Cntl+Shift+E, for example
' Works for Excel, but not Outlook or Chrome

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
'----------------------------------------------------------
Sub PasteChrome()

' Set shortcut to Cntl+Shift+C, for example
' Works for Outlook and Chrome, but not Excel

    ActiveSheet.PasteSpecial Format:="Text"
End Sub

One more thing:  save these macros in PERSONAL.XLSB so that your new Paste Special shortcut is available in all your spreadsheets.

I hope these macros will help you as much as they will me!

Beware of Spirit Airlines’ boarding pass policy

Spirit Airlines

Spirit Airlines

I’m not going to bore you with my airline horror story, but I recommend you take note of section 2.3.1. of Spirit Airlines Contract of Carriage if you are flying that airline.  They state that you must obtain a printed boarding pass 45 minutes prior to boarding for most major airports.  Compare that with 30 minutes (electronic tickets are valid) for most other major airlines, for example section Rule 5 D) 1) a) of United Airlines Contract of Carriage.

I for one won’t be flying Spirit again.

Never buy Bose

The left speaker in my $300 Bose QuietComfort 15 stopped working after less than one and a half years.  When I called Bose to ask for a refund or exchange they informed me that their warranty period was one year.  Although after a lot of negotiation they finally offered to exchange them for $9.27 shipping I won’t be buying Bose again.  And I was just checking their website for a new home stereo system…

Bose QuietComfort 15 Acoustic Noise Cancelling Headphones

Bose QuietComfort 15 Acoustic Noise Cancelling Headphones