Olá,
O que você chama de alterar a impressora padrão? Você quer apenas alterar a impressora de destino enquanto está no seu programa, ou deseja que a impressora selecionada PERMANEÇA como a padrão do Windows?
Se for a primeira opção, o seu código acima está correto, desde que você tenha carregado o nome correto das impressoras para a combo (aliás, use Combo1.text, ao invés de apenas Combo1).
Mas se você deseja que a impressora permaneça selecionada como padrão mesmo depois de sair do seu programa, você deverá usar um código semelhante a esse:
Private Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
Private Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Private Const WM_WININICHANGE = &H1A
Private Const SMTO_NORMAL = &H0
Private Const HWND_BROADCAST = &HFFFF&
'Para Window 9x:
WriteProfileString "windows", "device", Printer.DeviceName & "," & Printer.DriverName & "," & Printer.Port
SendMessageTimeout HWND_BROADCAST, WM_WININICHANGE, 0, "windows", SMTO_NORMAL, 1000, 0
'Para Windows NT:
WriteProfileString "windows", "device", Printer.DeviceName & "," & Printer.DriverName & "," & Printer.Port
SendMessageTimeout HWND_BROADCAST, WM_WININICHANGE, 0, 0, SMTO_NORMAL, 1000, 0
um abraço,
Sandro.