Identificadores de programação OLE

Você pode usar um identificador de programação OLE (às vezes chamado de ProgID) para criar um objeto Automation. As tabelas seguintes listam identificadores de programação OLE para controles ActiveX, aplicativos do Microsoft Office e Office Web Components.

Controles ActiveX

Microsoft Access

Microsoft Excel

Microsoft Graph

Microsoft Office Web Components

Microsoft Outlook

Microsoft PowerPoint

Microsoft Word

Controles ActiveX

Para criar os controles ActiveX listados na tabela seguinte, use o identificador de programação OLE correspondente.

Para criar esse controleUse esse identificador
CheckBoxForms.CheckBox.1
ComboBoxForms.ComboBox.1
CommandButtonForms.CommandButton.1
FrameForms.Frame.1
ImageForms.Image.1
LabelForms.Label.1
ListBoxForms.ListBox.1
MultiPageForms.MultiPage.1
OptionButtonForms.OptionButton.1
ScrollBarForms.ScrollBar.1
SpinButtonForms.SpinButton.1
TabStripForms.TabStrip.1
TextBoxForms.TextBox.1
ToggleButtonForms.ToggleButton.1

Microsoft Access

Para criar os objetos do Microsoft Access listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do Access disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadores
ApplicationAccess.Application, Access.Application
CurrentDataAccess.CodeData, Access.CurrentData
CurrentProjectAccess.CodeProject, Access.CurrentProject
DefaultWebOptionsAccess.DefaultWebOptions

Microsoft Excel

Para criar os objetos do Microsoft Excel listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do Excel disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadoresComentários
ApplicationExcel.Application, Excel.Application
WorkbookExcel.AddIn
WorkbookExcel.Chart, Excel.ChartRetorna uma pasta de trabalho que contém duas planilhas; uma para o gráfico e uma para seus dados. A planilha de gráfico é a planilha ativa.
WorkbookExcel.Sheet, Excel.SheetRetorna uma pasta de trabalho com uma planilha.

Microsoft Graph

Para criar objetos Microsoft Graph listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente de Graph disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadores
ApplicationMSGraph.Application, MSGraph.Application
ChartMSGraph.Chart, MSGraph.Chart

Microsoft Office Web Components

Para criar os objetos do Microsoft Office Web Components listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do Microsoft Office Web Components disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse estes identificadores
ChartSpaceOWC10.Chart
DataSourceControlOWC10.DataSourceControl
ExpandControlOWC.ExpandControl
PivotTableOWC10.PivotTable
RecordNavigationControlOWC10.RecordNavigationControl
SpreadsheetOWC10.Spreadsheet

Microsoft Outlook

Para criar os objetos do Microsoft Outlook listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do Outlook disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadores
ApplicationOutlook.Application, Outlook.Application

Microsoft PowerPoint

Para criar objetos Microsoft PowerPoint listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do PowerPoint disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadores
ApplicationPowerPoint.Application, PowerPoint.Application

Microsoft Word

Para criar os objetos Microsoft Word listados na tabela seguinte, use um dos identificadores de programação OLE correspondentes. Se você usar um identificador sem sufixo de número de versão, criará um objeto na versão mais recente do Word disponível na máquina em que a macro está sendo executada.

Para criar este objetoUse um desses identificadores
ApplicationWord.Application, Word.Application
DocumentWord.Document, Word.Document.9, Word.Template
GlobalWord.Global

Controlar um aplicativo do Microsoft Office a partir de outro

Se você deseja executar código em um aplicativo do Microsoft Office que trabalhe com os objetos de um outro aplicativo, siga esses passos.

  1. Defina uma referência à biblioteca de tipos do outro aplicativo na caixa de diálogo Referências (menu Ferramentas). Depois que você fizer isso, os objetos, propriedades e métodos aparecerão no pesquisador de objetos e a sintaxe será verificada durante a compilação. Você também pode obter ajuda contextual.
  2. Declare variáveis de objeto que se refiram aos objetos de outro aplicativo como tipos específicos. Certifique-se de qualificar cada tipo com o nome do aplicativo que está fornecendo o objeto. Por exemplo, a instrução a seguir declara uma variável que irá apontar para um documento do Microsoft Word e uma outra que irá se referir a uma pasta de trabalho do Microsoft Excel:
    Dim appWD As Word.Application, wbXL As Excel.Workbook

    Observação Você precisa seguir os passos anteriores se desejar que seu código seja de acoplamento antecipado.

  3. Use a função CreateObject com Identificadores de programação OLE do objeto do outro aplicativo com o qual você deseja trabalhar, conforme mostrado no exemplo a seguir. Se quiser ver a sessão do outro aplicativo, defina a propriedade Visible como True.
    Dim appWD As Word.Application

    Set appWD = CreateObject("Word.Application")
    appWd.Visible = True

  4. Aplique propriedades e métodos ao objeto contido na variável. Por exemplo, a instrução seguinte cria um novo documento do Word.
    Dim appWD As Word.Application

    Set appWD = CreateObject("Word.Application")
    appWD.Documents.Add

  5. Quando você tiver terminado de trabalhar com o outro aplicativo, use o método Quit para fechá-lo, conforme mostrado no exemplo seguinte.
    appWd.Quit

Trabalhando com formas (objetos de desenho)

As formas ou objetos de desenho são representadas por três objetos diferentes: a coleção Shapes, a coleção ShapeRange e o objeto Shape. Em geral, você usa a coleção Shapes para criar formas e para fazer uma iteração através de todas as formas em uma determinada planilha; você usa o objeto Shape para formatar ou modificar uma única forma; e usa a coleção ShapeRange quando deseja modificar várias formas da mesma maneira que você trabalha com várias formas na interface do usuário.

Definir propriedades para uma forma

Muitas propriedades de formatação de formas não são definidas por propriedades que se aplicam diretamente ao objeto Shape ou ShapeRange. Ao invés disso, atributos de forma relacionados são agrupados sob objetos secundários, como o objeto FillFormat, o qual contém todas as propriedades relacionadas ao preenchimento da forma ou o objeto LinkFormat, o qual contém todas as propriedades que são exclusivas de objetos OLE vinculados. Para definir propriedades para uma forma, você precisa primeiro retornar o objeto que representa o conjunto de atributos de forma relacionados e, em seguida, definir propriedades desse objeto retornado. Por exemplo, você usa a propriedade Fill para retornar o objeto FillFormat e, em seguida, define a propriedade ForeColor do objeto FillFormat para definir a cor de primeiro plano do preenchimento da forma especificada, conforme mostrado no exemplo seguinte.

Worksheets(1).Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Aplicar uma propriedade ou método a várias formas ao mesmo tempo

Na interface do usuário, existem algumas operações que você pode efetuar com várias formas selecionadas; você pode, por exemplo, selecionar várias formas e definir todos os seus preenchimentos individuais de uma vez. Existem outras operações que você só pode efetuar com uma única forma selecionada; por exemplo, você só pode editar o texto em uma forma se uma única forma estiver selecionada.

No Visual Basic, existem duas maneiras de se aplicar propriedades e métodos a um conjunto de formas. Essas duas maneiras permitem que você efetue qualquer operação que você possa efetuar em uma única forma em um intervalo de formas, quer você possa ou não efetuar a mesma operação na interface do usuário.

  • Se a operação funciona em várias formas selecionadas na interface do usuário, você pode efetuar a mesma operação no Visual Basic construindo uma coleção ShapeRange contendo as formas com as quais você deseja trabalhar e aplicando as propriedades e métodos apropriados diretamente à coleção ShapeRange.
  • Se a operação não funciona em várias formas selecionadas na interface do usuário, você ainda pode efetuar a operação no Visual Basic fazendo um loop pela coleção Shapes ou por uma coleção ShapeRange que contenha as formas com as quais você deseja trabalhar, e aplicando as propriedades e métodos apropriados aos objetos Shape individuais na coleção.

Muitas propriedades e métodos que se aplicam ao objeto Shape e à coleção ShapeRange falham quando aplicados a determinados tipos de forma. Por exemplo, a propriedade TextFrame falha quando aplicada a uma forma que não pode conter texto. Se você não tem certeza de que uma determinada propriedade ou método pode ser aplicado a cada uma das formas de uma coleção ShapeRange, não aplique a propriedade ou método à coleção ShapeRange. Se você desejar aplicar uma dessas propriedades ou métodos a uma coleção de formas, você precisará fazer um loop pela coleção e testar cada forma individual para certificar-se de que ela é do tipo apropriado antes de aplicar a propriedade ou método a ela.

Criar uma coleção ShapeRange contendo todas as formas de uma planilha

Você pode criar um objeto ShapeRange contendo todos os objetos Shape de uma planilha selecionando as formas e, em seguida, usando a propriedade ShapeRange para retornar um objeto ShapeRange contendo as formas selecionadas.

Worksheets(1).Shapes.Select
Set sr = Selection.ShapeRange

No Microsoft Excel, o argumento Index não é opcional para a propriedade Range da coleção Shapes, portanto você não pode usar essa propriedade sem um argumento para criar um objeto ShapeRange contendo todas as formas de uma coleção Shapes.

Aplicar uma propriedade ou método a uma coleção ShapeRange

Se você pode efetuar uma operação em várias formas selecionadas na interface do usuário ao mesmo tempo, você pode fazer o equivalente por programa construindo uma coleção ShapeRange e, em seguida, aplicando as propriedades ou métodos apropriados a ela. O exemplo seguinte constrói um intervalo de formas contendo as formas chamadas "Big Star" e "Little Star" em myDocument e aplica um preenchimento gradual a elas.

Set myDocument = Worksheets(1)
Set myRange = myDocument.Shapes.Range(Array("Big Star", _
"Little Star"))
myRange.Fill.PresetGradient _
msoGradientHorizontal, 1, msoGradientBrass

Veja a seguir diretrizes genéricas de como as propriedades e métodos se comportam quando são aplicadas a uma coleção ShapeRange.

  • A aplicação de um método à coleção é equivalente à aplicação do método a cada objeto Shape individual dessa coleção.
  • A definição do valor de uma propriedade da coleção é equivalente à definição do valor da propriedade de cada forma individual desse intervalo.
  • Uma propriedade da coleção que retorne uma constante retorna o valor da propriedade para uma forma individual da coleção se todas as formas da coleção têm o mesmo valor nessa propriedade. Se nem todas as formas da coleção têm o mesmo valor para a propriedade, ela retorna a constante "mista".
  • Uma propriedade da coleção que retorne um tipo de dados simples (como Long, Single ou String) retorna o valor da propriedade de uma forma individual se todas as formas da coleção têm o mesmo valor nessa propriedade.
  • O valor de algumas propriedades só pode ser retornado ou definido se houver exatamente uma forma na coleção. Se houver mais de uma forma na coleção, ocorrerá um erro em tempo de execução. Isso geralmente é o caso do retorno ou definição de propriedades quando a ação equivalente na interface do usuário só é possível com uma única forma (ações tais como edição de texto em uma forma ou edição dos pontos de uma forma livre).

As diretrizes anteriores também se aplicam quando você está definindo propriedades de formas que estão agrupadas sob objetos secundários da coleção ShapeRange, tais como o objeto FillFormat. Se o objeto secundário representar operações que possam ser efetuadas em vários objetos selecionados na interface do usuário, você poderá retornar o objeto de uma coleção ShapeRange e definir suas propriedades. Você pode, por exemplo, usar a propriedade Fill para retornar o objeto FillFormat que representa os preenchimentos de todas as formas da coleção ShapeRange. A definição das propriedades desse objeto FillFormat definirão as mesmas propriedades para todas as formas individuais da coleção ShapeRange.

Loop através de uma coleção Shapes ou ShapeRange

Mesmo que você não possa efetuar uma operação em várias formas na interface do usuário ao mesmo tempo selecionando-as e usando em seguida um comando, você pode efetuar a ação equivalente por programa fazendo um loop através da coleção Shapes ou ShapeRange que contenha as formas com as quais você deseja trabalhar, aplicando as propriedades e métodos apropriados aos objetos Shape individuais da coleção. O exemplo seguinte faz um loop através de todas as formas de myDocument e altera a cor de primeiro plano de cada forma que seja uma AutoForma.

Set myDocument = Worksheets(1)
For Each sh In myDocument.Shapes
If sh.Type = msoAutoShape Then
sh.Fill.ForeColor.RGB = RGB(255, 0, 0)
End If
Next

O exemplo seguinte constrói uma coleção ShapeRange contendo todas as formas selecionadas no momento na janela ativa e define a cor de primeiro plano para cada forma selecionada.

For Each sh in ActiveWindow.Selection.ShapeRange
sh.Fill.ForeColor.RGB = RGB(255, 0, 0)
Next

Alinhar, distribuir e agrupar formas em um intervalo de forma

Use os métodos Align e Distribute para posicionar um conjunto de formas umas em relação às outras ou em relação ao documento que as contém. Use o método Group ou o método Regroup para formar uma única forma agrupada a partir de um conjunto de formas.

Usando funções de planilha do Microsoft Excel no Visual Basic

Você pode usar a maioria das funções de planilha do Microsoft Excel em suas instruções de Visual Basic. Para ver uma lista das funções de planilha que você pode usar, consulte Lista de funções de planilha disponíveis para o Visual Basic.

Nota Algumas funções de planilha não são úteis no Visual Basic. Por exemplo, a função Concatenate não é necessária, pois no Visual Basic você pode usar o operador & para agrupar vários valores de texto.

Chamar uma função de planilha a partir do Visual Basic

No Visual Basic, as funções de planilha do Microsoft Excel estão disponíveis através do objeto WorksheetFunction.

O procedimento Sub a seguir usa a função de planilha Min para determinar o menor valor em um intervalo de células. Primeiro, a variável myRange é declarada como um objeto Range, e, em seguida, é definida com o intervalo A1:C10 de Sheet1. A uma outra variável, answer, é atribuído o resultado de se aplicar a função Min a myRange. Finalmente, o valor de answer é exibido em uma caixa de mensagem.

Sub UseFunction()
Dim myRange As Range
Set myRange = Worksheets("Sheet1").Range("A1:C10")
answer = Application.WorksheetFunction.Min(myRange)
MsgBox answer
End Sub

Se você usar uma função de planilha que requer uma referência de intervalo como argumento, você precisará especificar um objeto Range. Por exemplo, você pode usar a função de planilha Match para pesquisar um intervalo de células. Em uma célula de planilha, você digitaria uma fórmula tal como =CORRESP(9;A1:A10;0). Entretanto, em um procedimento do Visual Basic, você especificaria um objeto Range para obter o mesmo resultado.

Sub FindFirst()
myVar = Application.WorksheetFunction _
.Match(9, Worksheets(1).Range("A1:A10"), 0)
MsgBox myVar
End Sub

Observação As funções do Visual Basic não usam o qualificador WorksheetFunction. Uma função pode ter o mesmo nome que uma função do Microsoft Excel e ainda assim funcionar de maneira diferente. Por exemplo, Application.WorksheetFunction.Log e Log retornam valores diferentes.

Inserir uma função de planilha em uma célula

Para inserir uma função de planilha em uma célula, especifique a função como valor da propriedade Formula do objeto Range correspondente. No exemplo seguinte, a função de planilha ALEATÓRIO (que gera um número randômico) é atribuída à propriedade Formula do intervalo A1:B3 de Sheet1 na pasta de trabalho ativa.

Sub InsertFormula()
Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub

Exemplo

Este exemplo usa a função de planilha Pmt para calcular a prestação da hipoteca de um imóvel. Observe que este exemplo usa o método InputBox em vez da função InputBox para que o método possa efetuar uma verificação de tipo. As instruções Static fazem o Visual Basic manter os valores das três variáveis, que serão exibidos como valores padrão na próxima vez em que você executar o programa.

Static loanAmt
Static loanInt
Static loanTerm
loanAmt = Application.InputBox _
(Prompt:="Loan amount (100,000 for example)", _
Default:=loanAmt, Type:=1)
loanInt = Application.InputBox _
(Prompt:="Annual interest rate (8.75 for example)", _
Default:=loanInt, Type:=1)
loanTerm = Application.InputBox _
(Prompt:="Term in years (30 for example)", _
Default:=loanTerm, Type:=1)
payment = Application.WorksheetFunction _
.Pmt(loanInt / 1200, loanTerm * 12, loanAmt)
MsgBox "Monthly payment is " & Format(payment, "Currency")

Usando eventos com objetos do Microsoft Excel

Você pode escrever procedimentos de evento no Microsoft Excel no nível de planilha, gráfico, tabela de consulta, pasta de trabalho ou aplicativo. Por exemplo, o evento Activate ocorre no nível de planilha e o evento SheetActivate está disponível nos níveis de aplicativo e de pasta de trabalho. O evento SheetActivate de uma pasta de trabalho ocorre quando uma planilha da pasta de trabalho é ativada. No nível de aplicativo, o evento SheetActivate ocorre quando qualquer planilha de uma pasta de trabalho aberta é ativada.

Os procedimentos de evento Worksheet, chart sheet e workbook estão disponíveis para qualquer planilha ou pasta de trabalho aberta. Para escrever procedimentos de evento para um gráfico incorporado, um objeto QueryTable ou um objeto Application, é necessário criar um novo objeto usando a palavra-chave WithEvents em um módulo de classe.

Use a propriedade EnableEvents para ativar ou desativar eventos. Por exemplo, o uso do método Save para salvar uma pasta de trabalho faz com que o evento BeforeSave ocorra. Você pode evitar isso definindo a propriedade EnableEvents como False antes de chamar o método Save.

Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True

Listas de argumentos das caixas de diálogo internas

Constante de caixa de diálogolista(s) de argumentos
xlDialogActivatewindow_text, pane_num
xlDialogActiveCellFontfont, font_style, size, strikethrough, superscript, subscript, outline, shadow, underline, color, normal, background, start_char, char_count
xlDialogAddChartAutoformatname_text, desc_text
xlDialogAddinManageroperation_num, addinname_text, copy_logical
xlDialogAlignmenthoriz_align, wrap, vert_align, orientation, add_indent
xlDialogApplyNamesname_array, ignore, use_rowcol, omit_col, omit_row, order_num, append_last
xlDialogApplyStylestyle_text
xlDialogAppMovex_num, y_num
xlDialogAppSizex_num, y_num
xlDialogArrangeAllarrange_num, active_doc, sync_horiz, sync_vert
xlDialogAssignToObjectmacro_ref
xlDialogAssignToToolbar_id, position, macro_ref
xlDialogAttachTextattach_to_num, series_num, point_num
xlDialogAttachToolbars
xlDialogAutoCorrectcorrect_initial_caps, capitalize_days
xlDialogAxesx_primary, y_primary, x_secondary, y_secondary
xlDialogAxesx_primary, y_primary, z_primary
xlDialogBorderoutline, left, right, top, bottom, shade, outline_color, left_color, right_color, top_color, bottom_color
xlDialogCalculationtype_num, iter, max_num, max_change, update, precision, date_1904, calc_save, save_values, alt_exp, alt_form
xlDialogCellProtectionlocked, hidden
xlDialogChangeLinkold_text, new_text, type_of_link
xlDialogChartAddDataref, rowcol, titles, categories, replace, series
xlDialogChartLocation
xlDialogChartOptionsDataLabels
xlDialogChartOptionsDataTable
xlDialogChartSourceData
xlDialogChartTrendtype, ord_per, forecast, backcast, intercept, equation, r_squared, name
xlDialogChartType
xlDialogChartWizardlong, ref, gallery_num, type_num, plot_by, categories, ser_titles, legend, title, x_title, y_title, z_title, number_cats, number_titles
xlDialogCheckboxPropertiesvalue, link, accel_text, accel2_text, 3d_shading
xlDialogCleartype_num
xlDialogColorPalettefile_text
xlDialogColumnWidthwidth_num, reference, standard, type_num, standard_num
xlDialogCombinationtype_num
xlDialogConditionalFormatting
xlDialogConsolidatesource_refs, function_num, top_row, left_col, create_links
xlDialogCopyChartsize_num
xlDialogCopyPictureappearance_num, size_num, type_num
xlDialogCreateNamestop, left, bottom, right
xlDialogCreatePublisherfile_text, appearance, size, formats
xlDialogCustomizeToolbarcategory
xlDialogCustomViews
xlDialogDataDelete
xlDialogDataLabelshow_option, auto_text, show_key
xlDialogDataSeriesrowcol, type_num, date_num, step_value, stop_value, trend
xlDialogDataValidation
xlDialogDefineNamename_text, refers_to, macro_type, shortcut_text, hidden, category, local
xlDialogDefineStylestyle_text, number, font, alignment, border, pattern, protection
xlDialogDefineStylestyle_text, attribute_num, additional_def_args, ...
xlDialogDeleteFormatformat_text
xlDialogDeleteNamename_text
xlDialogDemoterow_col
xlDialogDisplayformulas, gridlines, headings, zeros, color_num, reserved, outline, page_breaks, object_num
xlDialogDisplaycell, formula, value, format, protection, names, precedents, dependents, note
xlDialogEditboxPropertiesvalidation_num, multiline_logical, vscroll_logical, password_logical
xlDialogEditColorcolor_num, red_value, green_value, blue_value
xlDialogEditDeleteshift_num
xlDialogEditionOptionsedition_type, edition_name, reference, option, appearance, size, formats
xlDialogEditSeriesseries_num, name_ref, x_ref, y_ref, z_ref, plot_order
xlDialogErrorbarXinclude, type, amount, minus
xlDialogErrorbarYinclude, type, amount, minus
xlDialogExternalDataProperties
xlDialogExtractunique
xlDialogFileDeletefile_text
xlDialogFileSharing
xlDialogFillGrouptype_num
xlDialogFillWorkgrouptype_num
xlDialogFilter
xlDialogFilterAdvancedoperation, list_ref, criteria_ref, copy_ref, unique
xlDialogFindFile
xlDialogFontname_text, size_num
xlDialogFontPropertiesfont, font_style, size, strikethrough, superscript, subscript, outline, shadow, underline, color, normal, background, start_char, char_count
xlDialogFormatAutoformat_num, number, font, alignment, border, pattern, width
xlDialogFormatChartlayer_num, view, overlap, angle, gap_width, gap_depth, chart_depth, doughnut_size, axis_num, drop, hilo, up_down, series_line, labels, vary
xlDialogFormatCharttypeapply_to, group_num, dimension, type_num
xlDialogFormatFontcolor, backgd, apply, name_text, size_num, bold, italic, underline, strike, outline, shadow, object_id, start_num, char_num
xlDialogFormatFontname_text, size_num, bold, italic, underline, strike, color, outline, shadow
xlDialogFormatFontname_text, size_num, bold, italic, underline, strike, color, outline, shadow, object_id_text, start_num, char_num
xlDialogFormatLegendposition_num
xlDialogFormatMaintype_num, view, overlap, gap_width, vary, drop, hilo, angle, gap_depth, chart_depth, up_down, series_line, labels, doughnut_size
xlDialogFormatMovex_offset, y_offset, reference
xlDialogFormatMovex_pos, y_pos
xlDialogFormatMoveexplosion_num
xlDialogFormatNumberformat_text
xlDialogFormatOverlaytype_num, view, overlap, gap_width, vary, drop, hilo, angle, series_dist, series_num, up_down, series_line, labels, doughnut_size
xlDialogFormatSizewidth, height
xlDialogFormatSizex_off, y_off, reference
xlDialogFormatTextx_align, y_align, orient_num, auto_text, auto_size, show_key, show_value, add_indent
xlDialogFormulaFindtext, in_num, at_num, by_num, dir_num, match_case, match_byte
xlDialogFormulaGotoreference, corner
xlDialogFormulaReplacefind_text, replace_text, look_at, look_by, active_cell, match_case, match_byte
xlDialogFunctionWizard
xlDialogGallery3dAreatype_num
xlDialogGallery3dBartype_num
xlDialogGallery3dColumntype_num
xlDialogGallery3dLinetype_num
xlDialogGallery3dPietype_num
xlDialogGallery3dSurfacetype_num
xlDialogGalleryAreatype_num, delete_overlay
xlDialogGalleryBartype_num, delete_overlay
xlDialogGalleryColumntype_num, delete_overlay
xlDialogGalleryCustomname_text
xlDialogGalleryDoughnuttype_num, delete_overlay
xlDialogGalleryLinetype_num, delete_overlay
xlDialogGalleryPietype_num, delete_overlay
xlDialogGalleryRadartype_num, delete_overlay
xlDialogGalleryScattertype_num, delete_overlay
xlDialogGoalSeektarget_cell, target_value, variable_cell
xlDialogGridlinesx_major, x_minor, y_major, y_minor, z_major, z_minor, 2D_effect
xlDialogImportTextFile
xlDialogInsertshift_num
xlDialogInsertHyperlink
xlDialogInsertNameLabel
xlDialogInsertObjectobject_class, file_name, link_logical, display_icon_logical, icon_file, icon_number, icon_label
xlDialogInsertPicturefile_name, filter_number
xlDialogInsertTitlechart, y_primary, x_primary, y_secondary, x_secondary
xlDialogLabelPropertiesaccel_text, accel2_text, 3d_shading
xlDialogListboxPropertiesrange, link, drop_size, multi_select, 3d_shading
xlDialogMacroOptionsmacro_name, description, menu_on, menu_text, shortcut_on, shortcut_key, function_category, status_bar_text, help_id, help_file
xlDialogMailEditMailerto_recipients, cc_recipients, bcc_recipients, subject, enclosures, which_address
xlDialogMailLogonname_text, password_text, download_logical
xlDialogMailNextLetter
xlDialogMainCharttype_num, stack, 100, vary, overlap, drop, hilo, overlap%, cluster, angle
xlDialogMainChartTypetype_num
xlDialogMenuEditor
xlDialogMovex_pos, y_pos, window_text
xlDialogNewtype_num, xy_series, add_logical
xlDialogNewWebQuery
xlDialogNoteadd_text, cell_ref, start_char, num_chars
xlDialogObjectPropertiesplacement_type, print_object
xlDialogObjectProtectionlocked, lock_text
xlDialogOpenfile_text, update_links, read_only, format, prot_pwd, write_res_pwd, ignore_rorec, file_origin, custom_delimit, add_logical, editable, file_access, notify_logical, converter
xlDialogOpenLinksdocument_text1, document_text2, ..., read_only, type_of_link
xlDialogOpenMailsubject, comments
xlDialogOpenTextfile_name, file_origin, start_row, file_type, text_qualifier, consecutive_delim, tab, semicolon, comma, space, other, other_char, field_info
xlDialogOptionsCalculationtype_num, iter, max_num, max_change, update, precision, date_1904, calc_save, save_values
xlDialogOptionsChartdisplay_blanks, plot_visible, size_with_window
xlDialogOptionsEditincell_edit, drag_drop, alert, entermove, fixed, decimals, copy_objects, update_links, move_direction, autocomplete, animations
xlDialogOptionsGeneralR1C1_mode, dde_on, sum_info, tips, recent_files, old_menus, user_info, font_name, font_size, default_location, alternate_location, sheet_num, enable_under
xlDialogOptionsListsAddstring_array
xlDialogOptionsListsAddimport_ref, by_row
xlDialogOptionsMEdef_rtl_sheet, crsr_mvmt, show_ctrl_char, gui_lang
xlDialogOptionsTransitionmenu_key, menu_key_action, nav_keys, trans_eval, trans_entry
xlDialogOptionsViewformula, status, notes, show_info, object_num, page_breaks, formulas, gridlines, color_num, headers, outline, zeros, hor_scroll, vert_scroll, sheet_tabs
xlDialogOutlineauto_styles, row_dir, col_dir, create_apply
xlDialogOverlaytype_num, stack, 100, vary, overlap, drop, hilo, overlap%, cluster, angle, series_num, auto
xlDialogOverlayChartTypetype_num
xlDialogPageSetuphead, foot, left, right, top, bot, hdng, grid, h_cntr, v_cntr, orient, paper_size, scale, pg_num, pg_order, bw_cells, quality, head_margin, foot_margin, notes, draft
xlDialogPageSetuphead, foot, left, right, top, bot, size, h_cntr, v_cntr, orient, paper_size, scale, pg_num, bw_chart, quality, head_margin, foot_margin, draft
xlDialogPageSetuphead, foot, left, right, top, bot, orient, paper_size, scale, quality, head_margin, foot_margin, pg_num
xlDialogParseparse_text, destination_ref
xlDialogPasteNames
xlDialogPasteSpecialpaste_num, operation_num, skip_blanks, transpose
xlDialogPasteSpecialrowcol, titles, categories, replace, series
xlDialogPasteSpecialpaste_num
xlDialogPasteSpecialformat_text, pastelink_logical, display_icon_logical, icon_file, icon_number, icon_label
xlDialogPatternsapattern, afore, aback, newui
xlDialogPatternslauto, lstyle, lcolor, lwt, hwidth, hlength, htype
xlDialogPatternsbauto, bstyle, bcolor, bwt, shadow, aauto, apattern, afore, aback, rounded, newui
xlDialogPatternsbauto, bstyle, bcolor, bwt, shadow, aauto, apattern, afore, aback, invert, apply, newfill
xlDialogPatternslauto, lstyle, lcolor, lwt, tmajor, tminor, tlabel
xlDialogPatternslauto, lstyle, lcolor, lwt, apply, smooth
xlDialogPatternslauto, lstyle, lcolor, lwt, mauto, mstyle, mfore, mback, apply, smooth
xlDialogPatternstype, picture_units, apply
xlDialogPhonetic
xlDialogPivotCalculatedField
xlDialogPivotCalculatedItem
xlDialogPivotClientServerSet
xlDialogPivotFieldGroupstart, end, by, periods
xlDialogPivotFieldPropertiesname, pivot_field_name, new_name, orientation, function, formats
xlDialogPivotFieldUngroup
xlDialogPivotShowPagesname, page_field
xlDialogPivotSolveOrder
xlDialogPivotTableOptions
xlDialogPivotTableWizardtype, source, destination, name, row_grand, col_grand, save_data, apply_auto_format, auto_page, reserved
xlDialogPlacementplacement_type
xlDialogPrintrange_num, from, to, copies, draft, preview, print_what, color, feed, quality, y_resolution, selection, printer_text, print_to_file, collate
xlDialogPrinterSetupprinter_text
xlDialogPrintPreview
xlDialogPromoterowcol
xlDialogPropertiestitle, subject, author, keywords, comments
xlDialogProtectDocumentcontents, windows, password, objects, scenarios
xlDialogProtectSharing
xlDialogPublishAsWebPage
xlDialogPushbuttonPropertiesdefault_logical, cancel_logical, dismiss_logical, help_logical, accel_text, accel_text2
xlDialogReplaceFontfont_num, name_text, size_num, bold, italic, underline, strike, color, outline, shadow
xlDialogRoutingSliprecipients, subject, message, route_num, return_logical, status_logical
xlDialogRowHeightheight_num, reference, standard_height, type_num
xlDialogRunreference, step
xlDialogSaveAsdocument_text, type_num, prot_pwd, backup, write_res_pwd, read_only_rec
xlDialogSaveCopyAsdocument_text
xlDialogSaveNewObject
xlDialogSaveWorkbookdocument_text, type_num, prot_pwd, backup, write_res_pwd, read_only_rec
xlDialogSaveWorkspacename_text
xlDialogScalecross, cat_labels, cat_marks, between, max, reverse
xlDialogScalemin_num, max_num, major, minor, cross, logarithmic, reverse, max
xlDialogScalecat_labels, cat_marks, reverse, between
xlDialogScaleseries_labels, series_marks, reverse
xlDialogScalemin_num, max_num, major, minor, cross, logarithmic, reverse, min
xlDialogScenarioAddscen_name, value_array, changing_ref, scen_comment, locked, hidden
xlDialogScenarioCellschanging_ref
xlDialogScenarioEditscen_name, new_scenname, value_array, changing_ref, scen_comment, locked, hidden
xlDialogScenarioMergesource_file
xlDialogScenarioSummaryresult_ref, report_type
xlDialogScrollbarPropertiesvalue, min, max, inc, page, link, 3d_shading
xlDialogSelectSpecialtype_num, value_type, levels
xlDialogSendMailrecipients, subject, return_receipt
xlDialogSeriesAxesaxis_num
xlDialogSeriesOptions
xlDialogSeriesOrderchart_num, old_series_num, new_series_num
xlDialogSeriesShape
xlDialogSeriesXx_ref
xlDialogSeriesYname_ref, y_ref
xlDialogSetBackgroundPicture
xlDialogSetPrintTitlestitles_for_cols_ref, titles_for_rows_ref
xlDialogSetUpdateStatuslink_text, status, type_of_link
xlDialogShowDetailrowcol, rowcol_num, expand, show_field
xlDialogShowToolbarbar_id, visible, dock, x_pos, y_pos, width, protect, tool_tips, large_buttons, color_buttons
xlDialogSizewidth, height, window_text
xlDialogSortorientation, key1, order1, key2, order2, key3, order3, header, custom, case
xlDialogSortorientation, key1, order1, type, custom
xlDialogSortSpecialsort_by, method, key1, order1, key2, order2, key3, order3, header, order, case
xlDialogSplitcol_split, row_split
xlDialogStandardFontname_text, size_num, bold, italic, underline, strike, color, outline, shadow
xlDialogStandardWidthstandard_num
xlDialogStylebold, italic
xlDialogSubscribeTofile_text, format_num
xlDialogSubtotalCreateat_change_in, function_num, total, replace, pagebreaks, summary_below
xlDialogSummaryInfotitle, subject, author, keywords, comments
xlDialogTablerow_ref, column_ref
xlDialogTabOrder
xlDialogTextToColumnsdestination_ref, data_type, text_delim, consecutive_delim, tab, semicolon, comma, space, other, other_char, field_info
xlDialogUnhidewindow_text
xlDialogUpdateLinklink_text, type_of_link
xlDialogVbaInsertFilefilename_text
xlDialogVbaMakeAddIn
xlDialogVbaProcedureDefinition
xlDialogView3delevation, perspective, rotation, axes, height%, autoscale
xlDialogWebOptionsEncoding
xlDialogWebOptionsFiles
xlDialogWebOptionsFonts
xlDialogWebOptionsGeneral
xlDialogWebOptionsPictures
xlDialogWindowMovex_pos, y_pos, window_text
xlDialogWindowSizewidth, height, window_text
xlDialogWorkbookAddname_array, dest_book, position_num
xlDialogWorkbookCopyname_array, dest_book, position_num
xlDialogWorkbookInserttype_num
xlDialogWorkbookMovename_array, dest_book, position_num
xlDialogWorkbookNameoldname_text, newname_text
xlDialogWorkbookNew
xlDialogWorkbookOptionssheet_name, bound_logical, new_name
xlDialogWorkbookProtectstructure, windows, password
xlDialogWorkbookTabSplitratio_num
xlDialogWorkbookUnhidesheet_text
xlDialogWorkgroupname_array
xlDialogWorkspacefixed, decimals, r1c1, scroll, status, formula, menu_key, remote, entermove, underlines, tools, notes, nav_keys, menu_key_action, drag_drop, show_info
xlDialogZoommagnification

Usando o Microsoft Office Web Components em formulários

Você pode adicionar um componente do Microsoft Office Web Components a um formulário no Visual Basic ou Visual Basic for Applications da mesma forma que faria para adicionar qualquer outro controle ActiveX a um formulário do usuário. Observe que apesar de poder usar a Caixa de ferramentas de propriedade ao criar um formulário, você não pode exibir a Caixa de ferramentas de propriedade de um Microsoft Office Web Component em um formulário modal ou em uma caixa de diálogo em tempo de execução. Isto é também verdadeiro para formulários modais criados em ambientes de criação diferentes do Visual Basic ou Visual Basic for Applications.

Criar uma caixa de diálogo personalizada

Use o procedimento seguinte para criar uma caixa de diálogo personalizada:

  1. Criar um UserForm

    No menu Inserir no Editor do Visual Basic, clique em UserForm.

  2. Adicionar controles a UserForm

    Localize na Caixa de ferramentas o controle que você deseja adicionar e arraste o controle para o formulário.

  3. Definir propriedades de controle

    Clique com o botão direito do mouse em um controle no modo de design e clique em Propriedades para exibir a janela Propriedades.

  4. Inicializar os controles

    Você pode inicializar controles em um procedimento antes de mostrar um formulário, ou pode adicionar código ao evento Initialize do formulário.

  5. Escrever procedimentos de evento

    Todos os controles têm um conjunto predefinido de eventos. Por exemplo, um botão de comando tem um evento Click que ocorre quando o usuário clica no botão de comando. Você pode escrever procedimentos de evento que sejam executados quando os eventos ocorrem.

  6. Mostrar a caixa de diálogo

    Use o método Show para exibir um UserForm.

  7. Usar valores de controle ao executar o código

    Algumas propriedades podem ser definidas em tempo de execução. As alterações feitas na caixa de diálogo pelo usuário são perdidas quando a caixa de diálogo é fechada.

Usando controles ActiveX em um documento

Assim como você pode adicionar controles ActiveX a caixas de diálogo personalizadas, você pode adicionar controles diretamente a um documento quando desejar fornecer uma maneira sofisticada do usuário interagir diretamente com sua macro sem a distração das caixas de diálogo. Use o procedimento seguinte para adicionar controles ActiveX a seu documento. Para obter informações mais específicas sobre uso de controles ActiveX no Microsoft Excel, consulte Usar controles ActiveX em planilhas.

  1. Adicionar controles ao documento

    Exiba a Caixa de ferramentas de controle, clique no controle que você deseja adicionar e, em seguida, clique no documento.

  2. Definir propriedades de controle

    Clique com o botão direito do mouse em um controle em modo de design e clique em Propriedades para exibir a janela Propriedades.

  3. Inicializar os controles

    Você pode inicializar controles em um procedimento.

  4. Escrever procedimentos de evento

    Todos os controles têm um conjunto predefinido de eventos. Por exemplo, um botão de comando tem um evento Click que ocorre quando o usuário clica no botão de comando. Você pode escrever procedimentos de evento que sejam executados quando os eventos ocorrem.

  5. Usar valores de controle enquanto o código está sendo executado

    Algumas propriedades podem ser definidas em tempo de execução.

Usando controles ActiveX em planilhas

Esse tópico cobre informações específicas sobre como usar controles ActiveX em planilhas e folhas de gráfico. Para obter informações gerais sobre como adicionar e trabalhar com controles, consulte Usar controles ActiveX em um documento e Criar uma caixa de diálogo personalizada.

Tenha o seguinte em mente ao trabalhar com controles em planilhas.

  • Além das propriedades padrão disponíveis para os controles ActiveX, as seguintes propriedades podem ser usadas com controles ActiveX no Microsoft Excel: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell e ZOrder.

    Essas propriedades podem ser definidas e retornadas usando o nome do controle ActiveX. O exemplo seguinte rola a janela da pasta de trabalho de forma que CommandButton1 fique no canto superior esquerdo.

    Set t = Sheet1.CommandButton1.TopLeftCell
    With ActiveWindow
    .ScrollRow = t.Row
    .ScrollColumn = t.Column
    End With

  • Alguns métodos e propriedades do Microsoft Excel Visual Basic são desativados quando um controle ActiveX é ativado. Por exemplo, o método Sort não pode ser usado quando um controle está ativo, assim o código seguinte falha em um procedimento de evento de clique de botão (porque o controle ainda está ativo depois que o usuário o clica).
    Private Sub CommandButton1.Click
    Range("a1:a10").Sort Key1:=Range("a1")
    End Sub

Você pode contornar esse problema ativando algum outro elemento na planilha antes de usar a propriedade ou método que falhou. Por exemplo, o código seguinte organiza o intervalo:

Private Sub CommandButton1.Click
Range("a1").Activate
Range("a1:a10").Sort Key1:=Range("a1")
CommandButton1.Activate
End Sub

  • Os controles em uma pasta de trabalho do Microsoft Excel incorporada em um documento em outro aplicativo não funcionarão se o usuário clicar duas vezes na pasta de trabalho para editá-la. Os controles funcionarão se o usuário clicar com o botão direito na pasta de trabalho e selecionar o comando Abrir no menu de atalho.
  • Quando uma pasta de trabalho do Microsoft Excel é salva no formato de arquivo de planilha do Microsoft Excel 5.0/95, as informações do controle ActiveX são perdidas.
  • A palavra-chave Me em um procedimento de evento para um controle ActiveX em uma planilha se refere à planilha, não ao controle.

Adicionar controles com o Visual Basic

No Microsoft Excel, os controles ActiveX são representados por objetos OLEObject na coleção OLEObjects (todos os objetos OLEObject também estão a coleção Shapes). Para adicionar por programação um controle ActiveX a uma planilha, use o método Add da coleção OLEObjects. O exemplo seguinte adiciona um botão de comando à planilha um.

Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100

Usar as propriedades do controle com o Visual Basic

Na maioria dos casos, o código do Visual Basic fará referência aos controles ActiveX por nome. O exemplo seguinte altera a legenda do controle chamado "CommandButton1".

Sheet1.CommandButton1.Caption = "Run"

Observe que quando você usa um nome de controle fora do módulo da classe para a planilha que contém o controle, é preciso qualificar o nome do controle com o nome da planilha.

Para alterar o nome do controle que você usa em código do Visual Basic, selecione o código e defina a propriedade (Name) na janela Propriedades.

Como os controles ActiveX também são representados por objetos OLEObject na coleção OLEObjects, você pode definir as propriedades do controle usando os objetos na coleção. O exemplo seguinte define a posição esquerda do controle chamada "CommandButton1".

Worksheets(1).OLEObjects("CommandButton1").Left = 10

As propriedades do controle que não são exibidas como propriedades do objeto OLEObject podem ser definidas retornando o objeto de controle real usando a propriedade Object. O exemplo seguinte define a legenda de CommandButton1.

Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"

Como todos os objetos OLE também são membros da coleção Shapes, você pode usar a coleção para definir as propriedades para vários controles. O exemplo seguinte alinha a extremidade esquerda de todos os controles na planilha um.

For Each s In Worksheets(1).Shapes
If s.Type = msoOLEControlObject Then s.Left = 10
Next

Usar os nomes de controle com as formas e coleções OLEObjects

Um controle ActiveX em uma planilha possui dois nomes: o nome da forma que contém o controle, que pode ser visto na caixa Nome quando visualiza a planilha e o nome de código do controle, que pode ser visto na célula à direita de (Name) na janela Propriedades. Ao adicionar primeiro um controle em uma planilha, o nome da forma e o nome do código coincidem. Entretanto, se você alterar o nome da forma ou o nome do código, o outro não é automaticamente alterado para coincidir.

Você usa o nome do código de um controle nos nomes de seus procedimentos de evento. Entretanto, ao retornar um controle da coleção Shapes ou OLEObjects para uma planilha, você precisa usar o nome da forma, não o nome do código, para se referir ao controle por nome. Por exemplo, assuma que você adicione uma caixa de seleção a uma planilha e que ambos os nomes da forma e o nome de código padrão são CheckBox1. Se você alterar o nome do código do controle digitando chkFinished próximo a (Name) na janela Propriedades, você deve usar chkFinished nos nomes de procedimentos de evento, mas ainda tem que usar CheckBox1 para retornar o controle da coleção Shapes ou OLEObject, como mostrado no exemplo seguinte.

Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub

Como fazer referência a células e intervalos

Uma tarefa comum ao usar o Visual Basic é especificar uma célula ou intervalo de células e, em seguida, fazer algo com elas, como inserir uma fórmula ou alterar o formato. Geralmente, você pode fazer isso em uma instrução que identifique o intervalo e também altere uma propriedade ou aplique um método.

Um objeto Range no Visual Basic pode ser uma única célula ou um intervalo de células. Os tópicos seguintes mostram as maneiras mais comuns de identificar e trabalhar com objetos Range.

Como você deseja fazer referência a células?

Referindo-se a células e intervalos usando notação A1

Referindo-se a células usando números de índice

Referindo-se a linhas e colunas

Referindo-se a células usando notação de atalho

Referindo-se a intervalos nomeados

Referindo-se a células em relação a outras células

Referindo-se a células usando um objeto Range

Referindo-se a todas as células da planilha

Referindo-se a vários intervalos

Loop através de um intervalo de células

Ao usar o Visual Basic, você freqüentemente precisa executar o mesmo bloco de instruções em cada célula de um intervalo de células. Para fazer isso, você combina uma instrução de loop com um ou mais métodos para identificar cada célula, uma de cada vez, e executa a operação.

Uma maneira de fazer loop através de um intervalo é usar o loop For...Next com a propriedade Cells. Usando a propriedade Cells, você pode substituir o contador do loop (ou outras variáveis ou expressões) pelos números de índice das células. No exemplo seguinte, a variável counter é substituída pelo índice de linha. O procedimento faz um loop através de um intervalo C1:C20, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

Sub RoundToZero1()
For Counter = 1 To 20
Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next Counter
End Sub

Uma outra maneira mais fácil de se fazer um loop através de um intervalo é usar um loop For Each...Next com a coleção de células retornada pela propriedade Range. O Visual Basic define automaticamente uma variável de objeto para a próxima célula cada vez que o loop é executado. O procedimento seguinte faz um loop através do intervalo A1:D10, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

Sub RoundToZero2()
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

Se você não souber os limites do intervalo pelo qual deseja fazer o loop, você pode usar a propriedade CurrentRegion para retornar o intervalo que envolve a célula ativa. Por exemplo, o procedimento seguinte, quando executado de uma planilha, faz um loop através do intervalo que envolve a célula ativa, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

Sub RoundToZero3()
For Each c In ActiveCell.CurrentRegion.Cells
If Abs(c.Value) < 0.01 Then c.Value = 0
Next
End Sub

Selecionar e ativar células

Quando você trabalha com o Microsoft Excel, você geralmente seleciona uma célula ou células e, em seguida, efetua uma ação, como formatar as células ou inserir valores nelas. No Visual Basic, normalmente não é necessário selecionar células antes de modificá-las.

Por exemplo, se você desejar inserir uma fórmula na célula D6 usando o Visual Basic, você não terá que selecionar o intervalo D6. Você precisa apenas retornar o objeto Range e, em seguida, definir a propriedade Formula com a fórmula desejada, conforme mostrado no exemplo seguinte.

Sub EnterFormula()
Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"
End Sub

Para exemplos de uso de outros métodos para controlar células sem selecioná-las, consulte Como fazer referência a células e intervalos.

Usar o método Select e a propriedade Selection

O método Select ativa planilhas e objetos em planilhas; a propriedade Selection retorna um objeto representando a seleção atual na planilha ativa da pasta de trabalho ativa. Antes de você poder usar com êxito a propriedade Selection, você precisa ativar uma pasta de trabalho, ativar ou selecionar uma planilha e, em seguida, selecionar um intervalo (ou outro objeto) usando o método Select.

O gravador de macro costuma criar macros que usam o método Select e a propriedade Selection. O procedimento Sub seguinte foi criado pelo uso do gravador de macro, e ilustra como Select e Selection funcionam juntas.

Sub Macro1()
Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Address"
Range("A1:B1").Select
Selection.Font.Bold = True
End Sub

O exemplo seguinte realiza a mesma tarefa sem ativar nem selecionar a planilha ou as células.

Sub Labels()
With Worksheets("Sheet1")
.Range("A1") = "Name"
.Range("B1") = "Address"
.Range("A1:B1").Font.Bold = True
End With
End Sub

Selecionar células na planilha ativa

Se você usa o método Select para selecionar células, esteja ciente de que Select só funciona na planilha ativa. Se você executar o seu procedimento Sub a partir do módulo, o método Select falhará a menos que o seu procedimento ative a planilha antes de usar o método Select em um intervalo de células. Por exemplo, o procedimento seguinte copia uma linha de Sheet1 para Sheet2 na pasta de trabalho ativa.

Sub CopyRow()
Worksheets("Sheet1").Rows(1).Copy
Worksheets("Sheet2").Select
Worksheets("Sheet2").Rows(1).Select
Worksheets("Sheet2").Paste
End Sub

Ativar uma célula dentro de uma seleção

Você pode usar o método Activate para ativar uma célula dentro de uma seleção. Só pode haver uma célula ativa, mesmo quando um intervalo de células é selecionado. O procedimento seguinte seleciona um intervalo e, em seguida, ativa uma célula dentro do intervalo sem alterar a seleção.

Sub MakeActive()
Worksheets("Sheet1").Activate
Range("A1:D4").Select
Range("B2").Activate
End Sub

Trabalhando com intervalos 3D

Se você estiver trabalhando com o mesmo intervalo em mais de uma planilha, use a função Array para especificar duas ou mais planilhas para selecionar. O exemplo seguinte formata a borda de um intervalo 3D de células.

Sub FormatSheets()
Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select
Range("A1:H1").Select
Selection.Borders(xlBottom).LineStyle = xlDouble
End Sub

O exemplo seguinte aplica o método FillAcrossSheets para transferir os formatos em quaisquer dados do intervalo em Sheet2 para os intervalos correspondentes em todas as planilhas da pasta de trabalho ativa.

Sub FillAll()
Worksheets("Sheet2").Range("A1:H1") _
.Borders(xlBottom).LineStyle = xlDouble
Worksheets.FillAcrossSheets (Worksheets("Sheet2") _
.Range("A1:H1"))
End Sub

Trabalhando com a célula ativa

A propriedade ActiveCell retorna um objeto Range representando a célula que está ativa. Você pode aplicar qualquer das propriedades ou métodos de um objeto Range à célula ativa, como no exemplo seguinte.

Sub SetValue()
Worksheets("Sheet1").Activate
ActiveCell.Value = 35
End Sub

Observação Você só pode trabalhar com a célula ativa quando a planilha na qual ela se encontra é a planilha ativa.

Mover a célula ativa.

Você pode usar o método Activate para designar qual célula é a célula ativa. Por exemplo, o procedimento seguinte torna B5 a célula ativa e, em seguida, a formata com negrito.

Sub SetActive()
Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("B5").Activate
ActiveCell.Font.Bold = True
End Sub

Observação Para selecionar um intervalo de células, use o método Select. Para tornar uma única célula a célula ativa, use o método Activate.

Você pode usar a propriedade Offset para mover a célula ativa. O procedimento seguinte insere texto na célula ativa do intervalo selecionado e, em seguida, move a célula ativa uma célula para a direita sem alterar a seleção.

Sub MoveActive()
Worksheets("Sheet1").Activate
Range("A1:D10").Select
ActiveCell.Value = "Monthly Totals"
ActiveCell.Offset(0, 1).Activate
End Sub

Selecionar as células ao redor da célula ativa

A propriedade CurrentRegion retorna um intervalo de células delimitado por linhas e colunas em branco. No exemplo seguinte, a seleção é expandida para incluir as células adjacentes à célula ativa, que contenham dados. Em seguida, esse intervalo é formatado com o formato Currency.

Sub Region()
Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
Selection.Style = "Currency"
End Sub

Salvar documentos como páginas da Web

No Microsoft Excel, você pode salvar uma pasta de trabalho, planilha, gráfico, intervalo, consulta de tabela, relatório de tabela dinâmica, área de impressão ou intervalo de AutoFiltro em uma página da Web. Você também pode editar arquivos HTML diretamente no Excel.

Salvar um documento como página da Web

Salvar um documento como uma página da Web é o processo de criar e salvar um arquivo HTML e quaisquer arquivos de suporte. Para fazer isso, use o método SaveAs, como mostrado no exemplo seguinte, que salva a pasta de trabalho ativa como C:\Reports\myfile.htm.

ActiveWorkbook.SaveAs _
Filename:="C:\Reports\myfile.htm", _
FileFormat:=xlHTML

Personalizar a página da Web

Você pode personalizar a aparência, conteúdo, suporte de navegador, suporte de edição, formatos gráficos, resolução de tela, organização de arquivo e codificação do documento HTML definindo propriedades do objeto DefaultWebOptions e do objeto WebOptions. O objeto DefaultWebOptions contém propriedades em nível de aplicativo. Essas configurações são sobrescritas por quaisquer configurações de propriedade em nível de pasta de trabalho que tenham os mesmos nomes (contidas no objeto WebOptions).

Após definir os atributos, você pode usar o método Publish para salvar a pasta de trabalho, planilha, gráfico, intervalo, tabela de consulta, relatório de gráfico dinâmico, área de impressão ou intervalo de AutoFiltro de uma página da Web. O exemplo seguinte define várias propriedades em nível de aplicativo e define a propriedade AllowPNG da pasta de trabalho ativa, sobrescrevendo a configuração padrão em nível de aplicativo. Finalmente, o exemplo salva o intervalo como "C:\Reports\1998_Q1.htm".

With Application.DefaultWebOptions
.RelyonVML = True
.AllowPNG = True
.PixelsPerInch = 96
End With
With ActiveWorkbook
.WebOptions.AllowPNG = False
With .PublishObjects(1)
.FileName = "C:\Reports\1998_Q1.htm"
.Publish
End With
End With

Você também pode salvar os arquivos diretamente em um servidor Web. O exemplo seguinte salva um intervalo em um servidor Web, dando à página da Web o endereço de URL http://example.homepage.com/annualreport.htm.

With ActiveWorkbook
With .WebOptions
.RelyonVML = True
.PixelsPerInch = 96
End With
With .PublishObjects(1)
.FileName = _
"http://example.homepage.com/annualreport.htm"
.Publish
End With
End With

Abrir um documento HTML em Microsoft Excel

Para editar um documento HTML no Excel, abra primeiro o documento usando o método Open. O exemplo seguinte abre o arquivo "C:\Reports\1997_Q4.htm" para edição.

Workbooks.Open Filename:="C:\Reports\1997_Q4.htm"

Depois de abrir o arquivo, você pode personalizar a aparência, conteúdo, suporte de navegador, suporte de edição, formatos gráficos, resolução de tela, organização de arquivo e codificação do documento HTML definindo as propriedades dos objetos DefaultWebOptions e WebOptions.

Referir-se a planilhas por nome

Você pode identificar planilhas pelo nome usando as propriedades Worksheets e Charts. As instruções seguintes ativam várias planilhas na pasta de trabalho ativa.

Worksheets("Sheet1").Activate
Charts("Chart1").Activate
DialogSheets("Dialog1").Activate

Você pode usar a propriedade Sheets para retornar uma planilha, gráfico, módulo ou folha de caixa de diálogo; a coleção Sheets contém todos estes. O exemplo seguinte ativa a planilha chamada "Chart1" na pasta de trabalho ativa.

Sub ActivateChart()
Sheets("Chart1").Activate
End Sub

Observação Os gráficos incorporados em uma planilha são membros da coleção ChartObjects, enquanto que gráficos existentes em suas próprias folhas pertencem à coleção Charts.