Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

VBA Excel - Proteja-se para que ninguém copie e cole conteúdo nas suas planilhas - To prevent people cutting/copying and pasting when your workbook is open

Inline image 1
Geralmente, se não todas as vezes, desejamos que os nosso relatório, Dashboards e aplicações não sejam copiadas, ou tenham os seus conteúdos e layouts alterados por alguém que inadvertidamente cole dados na nossa planilha. 

Há como protegê-las dessas intempéries? Sim! Divirta-se com os códigos abaixo:

Sub DisableCutAndPaste()    EnableControl 21, False   ' cut    EnableControl 19, False   ' copy    EnableControl 22, False   ' paste    EnableControl 755, False  ' pastespecial    Application.OnKey "^c", ""    Application.OnKey "^v", ""    Application.OnKey "+{DEL}", ""    Application.OnKey "+{INSERT}", ""    Let Application.CellDragAndDrop = False  End Sub    Sub EnableCutAndPaste()    EnableControl 21, True   ' cut    EnableControl 19, True   ' copy    EnableControl 22, True   ' paste    EnableControl 755, True  ' pastespecial    Application.OnKey "^c"    Application.OnKey "^v"    Application.OnKey "+{DEL}"    Application.OnKey "+{INSERT}"    Let Application.CellDragAndDrop = True  End Sub    Sub EnableControl (Id As Integer, Enabled As Boolean)    Dim CB As CommandBar    Dim C As CommandBarControl
    For Each CB In Application.CommandBars      Set C = CB.FindControl(Id:=Id, recursive:=True)      
     If Not C Is Nothing Then Let C.Enabled = Enabled    Next  End Sub
Reference:
Bill Manville
Tags: VBA, Excel, cutting, copying, pasting, cut, copy, past

VBA Excel - Localize células que contenham fórmulas com valores literais - To locate cells containing formulas with literal values

Inline image 1
Sempre tem alguém que pergunta, mas prá que serve essa função? Bem, se você ainda não sabe prá que essa função serve é porque ainda tem alguma experiência a desenvolver com o MS Excel ou mesmo com o desenvolvimento VBA.

Faça o seguinte: Guarde essa função em sua biblioteca, e te garanto que no futuro precisará dela, mas do que imagina.

Aos demais que compreendem sobre o que estou falando, segue:

Function CellUsesLiteralValue (Cell As Range) As Boolean      If Not Cell.HasFormula Then          Let CellUsesLiteralValue = False      Else          Let CellUsesLiteralValue = Cell.Formula Like "*[=^/*+-/()><, ]#*"      End If  End Function

Reference:
John Walkenbach e John Green
Tags: VBA, Excel, cell, formulas

VBA Tips - 9 Dicas para reduzir erros durante o desenvolvimento - Nine tips for writing better VBA code

Inline image 2

Dicas para desenvolvermos códigos melhores, sermos mais acertivos, entendermos melhor o que entregaremos mediante o que nos foi solicitado, sempre é bem vindo. Espero que gostem destes pontos e os observem ao implementarem códigos nas suas futuras aplicações...

É muito difícil eliminarmos completamente todos os Bugs dos nossos códigos VBA.

Com o tempo, ao passo que desenvolvemos nossa biblioteca pessoal de funcionalidade que já foi utilizada e experimentada em várias aplicações, passaram por inúmeras depurações, os nossos códigos tendem a tornarem-se mais estáveis.

Mas enquanto estamos na fase de criar tais bibliotecas dando os primeiros passos no desenvolvimento,  podemos evitar muitos deslizes comuns durante o processo de criação e implementação. Geralmente tais cuidados requerem um mínimo de ajustes no modo como desenvolvemos nossas aplicações, considere-as a partir de agora:

. Utilize a expressão 'Option Explicit' no início dos seus módulos

Essa expressão forçará você a sempre lembrar-s de inicializar quaisquer variáveis que por ventura crie no seu código. Além disso se preocupará adicionalmente de definí-las com o tipo correto, de acordo com o conteúdo que receberão.

É verdade que inserir essa cláusula no início dos seus módulos lhe acrescentará um pouco de trabalho, mas o retorno será excelente, pois lhe poupará problemas como, por exemplo:

- Utilizar tipos diferentes de variáveis,
- Escrever erroneamente o nome delas e 
- Suas rotinas tenderão a ser executadas muito mais rapidamente.

Evite usar VARIANTS.
O VBA automaticamente converte os tipos de dados na sequência de um conjunto interno de regras que você não pode controlar. Isso significa que você não pode garantir que o tipo de dados convertidos será o que você precisa.

Variantes consomem mais espaço de armazenamento do que tipos de dados que são mais específicos.

Variantes não rejeitam dados inválidos.

É verdade que com a grande disponibilidade de memória dos sistemas operacionais atuais, bem como o tamanho das memórias RAM tornem o fato da declaração de tipos de dados com o objetivo de conservar os recursos não seja tão importante como era antes.

Mas pense:

- Os tipos de dados são maiores do que a memória que consomem.

- Os tipos de dados garantem a validade de seus dados.

Por exemplo:
Um tipo de dados
Integer aceitará apenas um valor inteiro válido. Se passar um valor decimal ou um caractere alfabético, o VBA o rejeitará e esse será o primeiro passo para proteger a validade dos seus dados.

Especificar um tipo de dados não irá eliminar todos os erros, mas garantirá que o valor definido seja o certo.

. Adapte-se a ideia de 'identar' o seu código

A identação ajuda a compreender o fluxo de idéias que o seu código quer transmitir. 

A identação serve de ajuda quanto a identificar certos procedimento no código. 

Ao utilizar FOR...NEXT, WHILE, IF, CASE por exemplo, considere a indentação como um modo de facilitar, e em muito, a identificação de blocos específicos no seu código.

. Cuide da expressão 'On Error Resume Next'

No MS Excel esta instância faz com que qualquer erro seja ignorado e continue o processamento. 

Em algumas situações fará o MS Excel ignorar erros que não devem ser ignorados. Talvez existam erros no seu código que você sequer tenha percebido, por causa deste comando, mas que precisem ser tratados, percebidos. 

. Comete o seu código o máximo que puder

Nada pode ser mais frustrante do que ao revisitar um código desenvolvido a uns meses (no meu caso semanas), perceber que não deixou ali nenhuma 'cola' para ajudar no seu trabalho. Adicione alguns comentários para descrever sua lógica, isso poderá lhe poupar muito tempo em eventuais manutenções no código. 

. Codificação simples, clara

Sempre que possível, mantenha suas Funções e Rotinas com uma codificação simples e clara. 

Procure dividir seu código em módulos pequenos, bem escritos, com alta performace individual. 

Estes cuidados tornarão qualquer debugagem posterior mais fácil. 


. Utilize o gravador de Macros

Não há vergonha alguma em aprender como escrever um código de modo razoável, antes de perdemos muito tempo pesquisando.

Quando estiver disponível na sua aplicação, utilize o gravador de macro (ou um gerador automático de código) para ajudá-lo a identificar (definir) as propriedades e métodos. 

Caso não consiga se lembrar de um nome ou sintaxe de uma propriedade ou método, sempre poderá recorrer ao help e à Internet. 


. Sempre considere soluções diferentes para o mesmo problema

Não é raro demorarmos para implementar uma solução que não se adequa muito bem a aplicação como um todo. Nesses casos considere a possibilidade de olhar para outro lado e desenvolver algo (por vezes) totalmente diferente para "encaixar" essa solução pontual ao conjunto da aplicação. 


. Debugador - Como utilizar

Aprenda a utilizar o debugador do VBE.

O debugador é uma excelente ferramenta quando usada plenamente. 

Habitue-se a consultar o help e aprender tudo o que pode retirar do debugador, isso lhe permitirá poupar muito tempo.

. Utilize Constantes

Armazenar um valor em constantes que raramente ou nunca mudam é uma boa prática.

Lembre-se, você não pode alterar o valor de uma constante enquanto o código está sendo executado, somente pode alterá-lo durante o desenvolvimento.

As constantes são mais fáceis de manter, mesmo que o valor ocorra apenas algumas vezes durante todo o seu código - você sabe exatamente onde ir para atualizar o valor.

Por exemplo, se você se referir a um valor de desconto de 10 por cento ao longo de uma dúzia ou mais de procedimentos, pode criar a seguinte constante:

ConDiscount Const As Single = 0,1

Desse modo quando for necessário efetuar uma alteração dos descontos, você tem de efetuar apenas uma atualização. Abrirá o respectivo módulo e alterará a instrução Const. E isso é certamente mais fácil do que localizar e atualizar diversas variáveis ​​ao longo de diversos módulos.

Reference:
Tags: VBA, Tips, Code, errors, VBA Tips & Tricks

VBA Excel - Gerenciar Uso de Ctrl+Break Durante Execução de Código - Prevent users CTRL Breaking in your vba code during execution

Inline image 1

O que acontece as suas aplicações quando um usuário mais 'avançado' pressiona o [CTRL] + [BREAK] durante um processamento ?

Seus dados são corrompidos travando indefinidamente a sua aplicação?

Suponha que tenho código abaixo rodando e algum usuário dê um  [CTRL] + [BREAK]:

Sub Interrupter()
    
    Dim sng As Single
    
    Let sng = Timer

    Do While sng + 5 > Timer
        'Sai do lanço após cinco segundos.
    Loop

End Sub

No código abaixo, preparará o seu código para que o comportamento das teclas de interrupção mudem.

O código é a Propriedade EnableCancelKey do Objeto Application. Ao escrever Let application.EnableCancelKey =, perceba o que aparecerá:

Inline image 2

O Intellisense mostra que é possível atribuir três valores enumerados à EnableCancelKey, que são:

xlDisabled

xlErrorHandler

xlInterrupt.

O valor padrão é xlInterrupt, quando a propriedade está atribuída à esse valor, o comportamento do VBE ao se pressionar Ctrl+Break em execução é: A execução do código foi interrompida.

Se desejar usar um valor diferente de xlInterrupt para essa propriedade, deverá explicitar isso no seu código porque seu valor será resetado para xlInterrupt toda vez que iniciar a execução de um código na sua Aplicação. Poderá alterar o valor dessa propriedade quantas vezes desejar. Configurando-o para que  no início seja xlDisabled e depois xlErrorHandler, por exemplo.

Seguem exemplos com os valores como xlErrorHandler ou xlInterrupt:

Desativando a funcionalidade da Combinação [CTRL] + [BREAK]
Diferentemente do exemplo da Introdução, o VBE ignorará a combinação Ctrl+Break e o código será executado até o fim. 

Recomendo o uso desse código em fragmentos críticos que, se não executados, podem comprometer a funcionalidade da aplicação. Caso sua aplicação entre num loop infinito, só poderá finalizá-la através do Gerenciador de Tarefas, talvez perdendo algumas alterações.

Sub Interrupter()
    
    Dim sng As Single
    
    Let sng = Timer
    Let Application.EnableCancelKey = xlDisabled

    Do While sng + 5 > Timer
        'Sai do lanço após cinco segundos.
    Loop

End Sub

Outra alternativa interessante:

Gerenciar a interrupção do código
O exemplo abaixo prescindo um conhecimento básico de rotinas de tratamento de erro. Quando o valor da Propriedade EnableCancelKey for xlErrorHandler, durante o pressionamento do Ctrl+Break, o VBA levantará um erro cujo código é 18. então, a rotina de tratamento de erro mostrará uma mensagem ao usuário:

Sub Interrupter()
    On Error GoTo Erro

    Dim sng As Single
    
    Let sng = Timer
    Let Application.EnableCancelKey = xlErrorHandler

    Do While sng + 5 > Timer
        'Sai do lanço após cinco segundos.
    Loop
    Exit Sub
    
Erro:
    If Err.Number = 18 Then
        MsgBox "Espere um momento. Não há problemas, aplicação em processamento..." _
          , vbCritical _
          , ".: Info"
        Resume
    End If

End Sub

Reference:


Tags: VBA, Excel, [CTRL] + [BREAK], Ctrl+Break, EnableCancelKey, xlDisabled, xlErrorHandler, xlInterrupt, interrupted, 

VBA Excel - Customizando a mensagem de bloqueio de célula no Excel - Possible to change default Protected Sheet Msg?

Inline image 1

Quando bloqueamos uma célula no MS Excel, para forçarmos o Dataentry através de um formulário, invariavelmente a pessoa que tentar bular digitando diretamente na planilha receberá uma mensagem padrão de alerta.

Podemos manipular essa mensagem com uma mensagem específica:

Private Sub Worksheet_Change (ByVal Target As Range)
Let Application.EnableEvents = False

If Target.Locked = True Then
    Application.Undo
    
    MsgBox "A digitação de dados só é permitida através do formulário."
End If

Let Application.EnableEvents = True
End Sub

ou

Private Sub Worksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean)
    If Target.Locked And ActiveSheet.ProtectContents Then
        MsgBox ("Edição não permitida.")
        
        Let Cancel = True
    End If
End Sub

Reference:

MrExcel.com

Tags: VBA, Excel, message, locked, protect, cell, sheet

VBA Tips - InputBox

Inline image 1

Segue um exemplo simples, mas funcional de como implementar um INPUT BOX com o VBA.

Inline image 1
O resultado será algo similar a:

Inline image 2

Inline image 3

Reference:   
Tags: VBA, tips, InputBox,

VBA Tips - Identando o código VBA - Smart Indenter

Inline image 1

Mantermos os nossos códigos é muito produtivo, pois permite que o entendamos após algum tempo quando olhamos para ele, ou mesmo quando terceiros precisarem fazer manutenção em aplicações escritas por nós. Escrever bons códigos inclue desde a boa atribuição de nomes para os nossos Objetos, Classes, Módulos, SUBs e Functions e vai até o ponto de fazermos questão de mantermos todo o código que desenvolvermos identado.

No Editor do Visual Basic (VBE), basta pressionarmos [TAB] antes do início de uma linha de código para criar uma indentação ou [SHIFT] + [TAB] para recuá-la. Mas confesso que as vezes o código fique enorme e tenhamos uma certa preguiça para identá-lo.

Será que existe uma solução que fizesse a indentação automaticamente no nosso código?

Sim, um suplemento muito útil, criado por Stephen Bullen - Smart Indenter, poderá baixá-lo aqui.

Este suplemento instala-se no menu suspenso do VBE, com a opção de indentar o código que selecionarmos, um módulo inteiro ou todo projeto. 

A utilização é simples: Basta clicar com o botão da direita no seu código, selecionarmos a opção criada pelo suplemento e escolher o nível de indentação que desejamos:

Inline image 1

 
Podemos ter várias personalizações de indentação por configurarmos  através da opção Indenting Options

Reference:   Stephen Bullen

Tags: VBA, tips, indent, indentação, Stephen Bullen, Smart Indenter,

04 - AMPLIE O SEU SENTIMENTO DE PERTENCIMENTO - BE SOCIABLE

Inline image 1



Gemeinschaft (comunidade)
 
                            X
Gesellschaft (sociedade)

Autores clássicos, como Ferdinand Tönies, procuravam conceituar a comunidade em oposição à sociedade. Tönies era inspirado no método galilaico, que era fundado em duas invenções da cultura grega, a teoria das ideias de Platão e a geometria de Euclides.


"O método consistia em escolher somente um caso e livrá-lo das impurezas do mundo observável, a fim de encontrar o princípio de acordo com o qual o caso em questão 'funcionaria' em circunstâncias ideais" (Töttö 1985:49).


Por isso, Tönies procurou criar um conceito de comunidade "pura", idealizada, oposta ao conceito de sociedade, criado pela vida moderna.

Para TöniesGemeinschaft (comunidade) representava o passado, a aldeia, a família, o calor. Tinha motivação afetiva, era orgânica, lidava com relações locais e com interação. As normas e o controle davam-se através da união, do hábito, do costume e da religião. Seu círculo abrangia família, aldeia e cidade.

Para TöniesGesellschaft (sociedade) era a frieza, o egoísmo, fruto da calculista modernidade. Sua motivação era objetiva, era mecânica, observava relações supralocais e complexas.  As normas e o controle davam-se através de convenção, lei e opinião pública. Seu círculo abrangia metrópole, nação, Estado e Mundo.

Para Tönies, a comunidade, Gemeinschaft, seria o estado ideal dos grupos humanos. A sociedade, Gesellschaft, por outro lado, seria a sua corrupção.

É natural desejarmos  fazer parte de um grupo, somos seres sociais e isso explica o motivo do 'boom' das redes sociais.

Mas o enfoque aqui é profissional:

Atraia pessoas que tenham um perfil similar ao seu.


Como um felino, precisa ter o olhar de caçador, em busca da constante formação da sua comunidade de interesse comum.


Estes formarão  a sua comunidade social e se tornarão os seus Clientes/Leitores.


Na prática . . . HAJA!

Conheça inúmeros sites cujos os assuntos se relacionem diretamente com a sua área de  atuação.

Descubra veículos na mídia que abordem, ou  promovam ações que estejam no mesmo raio de alcance das pessoas que deseja atrair.

Busque grupos, dentro das redes sociais e networking,  que tenham potencial  à adesão.

Mantenha disponível um formulário eletrônico logo após o seu artigo online para coletar informações relevantes que estreitem seu relacionamento com a sua comunidade.

Fomente enquetes de interesse desse grupo.


Inline image 2

Inspiration: 
Tags: ,Gemeinschaft, Gesellschaft, Comunidades Virtuais, sociabilização no ciberespaço, virtual settlement.

Referências Bibliográficas
ALDUS, Joan. O Intercâmbio entre Durkheim e tönies quanto à Natureza das Relações Sociais. In 

MIRANDA, Orlando. Para Ler Ferdinand Tönies. Edusp. São Paulo, 1995.

ARANHA FILHO, Jayme. Tribos Eletrônicas: usos e costumes. Online em <http://www.alternex.com.br/~esocius/t-jayme.html> (06/10/1998)

BEAMISH, Anne. Commuties on-line: A Study of Community – Based Computer Networks. Tese de Mestrado em Panejamento de Cidades. Instituto de Tecnologia de Massachusetts  – Estados Unidos. 1995. <http://albertimit.edu/arch/4.207/anneb/thesis/toc.html> (06/10/1998). 

BELLEBAUM, Alfred.  Ferdinand Tönies. In MIRANDA, Orlando.  Para Ler Ferdinand Tönies.Edusp. São Paulo, 1995.

BUBER, Martin. Sobre Comunidade. Coleção Debates. Editora Perspectiva. São Paulo, 1987.

COATE, John. Cyberspace Innkeeping: Building Online Community. 1993. Online em gopher://gopher.well.sf.ca.us/00/Community/innkeeping. (26/10/1998)

DONATH, Judith S. Identity and Deception in the Virtual Community . In KOLLOCK Peter. e Marc Smith. (organizadores) Communities in Cyberspace. Routledge. New York, 1999.

FERNANDES, Florestan. (organizador)  Comunidade e Sociedade. Companhia Editora Nacional e Editora da Universidade de São Paulo. São Paulo, 1973.

FERNBACK, Jan & THOMPSON, Brad.  Virtual Communities: Abort, Retry, Failure? Online em <http://www.well.com/user/hlr/texts/Vccivil.html> (06/10/1998)

FERNBACK, Jan.  The Individual within the Collective: Virtual Ideology ad the Realization of Collective Principles. In JONES, Steve G.  Virtual Culture: Identity & Communication in Cybersociety. Sage Publications: Thousand Oaks, California, 1997.- a.  There is a There There: Notes Towards a Definition of Cybercommunity. In

JONES, Steven G. b.  Doing Internet Research. Critical Issues and Methods for Examining the Net. Sage Publications. Thousand Oaks, California, 1999.

GUIMARÃES JR. Mário. A Cibercultura e as Novas Formas de Sociabilidade. Trabalho apresentado no Grupo de Trabalho "Nuevos mapas culturales: Cyber espacio y tecnologia de la virtualidad", na II Reunión de Antropologia del Mercosur, Piriápolis, Uruguai, de 11 a 14 de novembro de 1997. Online em <http://www.cfh.ufsc.br/imprimatur/artigos/guimaraes.htm> (12/08/1999)

HAMMAN, Robin. Computer networks linking network communities: effects of AOL use upon preexisting communities. 1999.  Online em <http://www.socio.demon.co.uk/cybersociety/>(01/08/2001). The Online/Offline Dichotomy: Debunking Some Myths about AOL Users and the Effects of Their Being Online Upon Offline Friendships and Offline Community. Mphil thesis. University of Liverpool, 1998. Online em <http://www.cybersoc.com/mphil.html>(01/08/2001).  Introduction to Virtual Communities Research and Cybersociology Magazine Issue Two. Online em <http://members.aol.com/Cybersoc/is2intro.html>(06/10/1998)

HARVEY, David. Condição Pós-Moderna. Edições Loyola. São Paulo, 1989.

HOLETON, Richard. Composing Cyberspace: Identity, Community and Knowledge in the Eletronic Age.  McGraw-Hill. USA, 1998.

JOHNSTON, Elizabeth. The Community in Ciberspace.   Online em <http://www.acs.ucalgary.ca/~dobrent/380/webproj/commun.html> (14/08/2000)

JONES, Quentin.  Virtual-Communities, Virtual Settlements & Cyber-Archaelogy  – A Theoretical Outline. In Journal of Computer Mediated Communication vol. 3 issue 3. December, 1997. Online em <http://jcmc.huji.ac.il/vol3/issue3/jones.html> (01/10/1998)

JONES, Steven G. (org)Virtual Culture: Identity & Communication in Cybersociety. Sage Publications: Thousand Oaks, California, 1997

KOLLOCK Peter. e Marc Smith. (organizadores) Communities in Cyberspace. Routledge. New York, 1999. Communities in Cyberspace.  In KOLLOCK Peter. e Marc Smith. (organizadores) Communities in Cyberspace. Routledge. New York, 1999.

LEMOS, André L. M.  As Estruturas Antropológicas do Cyberespaço. Online em <http://www.ligse.com/professores/jurema/estruturas.html> (01/08/2001). Santa Clara Poltergeist: "Cyberpunk" à brasileira? Online em <http://www.facom.ufba.br/ciberpesquisa/lemos/culcyber.html> (30/08/2001)

LEVACOV, Marília. Do Analógico ao Digital: A comunicação e a Informação no Final do Milênio. In Tendências na Comunicação. LPM, Porto Alegre, 1998.

LÈVY, Pierre. Cibercultura. Editora 34. São Paulo, 1999. A Revolução Contemporânea em Matéria de Comunicação. In MARTINS, Francisco M. e SILVA, Juremir M. da. Para Navegar no Século XXI. Tecnologias do Imaginário e da Cibercultura. EDIPUCRS, Porto Alegre, 1999. O que é o Virtual? Editora 34. São Paulo, 1997. As Tecnologias da Inteligência. Editora 34. São Paulo, 1998.

MANTA, André e SENA, Luiz Henrique.  As afinidades virtuais: A Sociabilidade do Videopapo. Online em <http://www.facom.ufba.br/pesq/cyber/lemos/estray1.html> (06/10/1998)

MCLUHAN, Marshall. Os Meios de Comunicação como Extensões do Homem.  Ed. Cultrix, São  Paulo, 1964.

MERLO, Valerio.  Rumo à Origem da Sociologia Rural: Vontade Humana e Estrutura Social ao  Pensamento de Ferdinand Tönies. In MIRANDA, Orlando. Para Ler Ferdinand Tönies. Edusp. São Paulo, 1995.

MIRANDA, Orlando. (organizador) Para Ler Ferdinand Tönies. EDUSP. São Paulo, 1995.A Armadilha do Objeto – O Ponto de Partida de Ferdinand Tönies. In  

MIRANDA, Orlando. Para Ler Ferdinand Tönies. Edusp. São Paulo, 1995.

PACCAGNELLA, Luciano.  Getting the Seats of Your Pants Dirty: Strategies for Ethnographic Research on Virtual Communities. Journal of Computer Mediated Communication, Vol 3, Issue 1. Junho de 1997. Online em  <http://www.ascusc.org/jcmc/vol3/issue1/paccagnella.html> (12/08/1998)

PALACIOS, Marcos.  Cotidiano e Sociabilidade no Cyberespaço: Apontamentos para Discussão. Online em <http://facom/ufba/br/pesq/cyber/palacios/cotidiano.html > (19/11/1998)

PRIMO, Alex  F. T. A Emergência das Comunidades Virtuais. Texto apresentado no Gt de Teoria da Comunicação no XX Congresso da Intercom  – Santos/SP, 27 de agosto a 07 de setembro de 1997. Online em <http://usr.psico.ufrgs.br/~aprimo > (10/08/2001). Interação Mútua e Interação Reativa. Texto apresentado no GT de Teoria da Comunicação para apresentação do XXI Congresso da Intercom  - Recife, PE, de 9 a 12 de setembro de 1998. Online em <http://www.psico.ufrgs.br/~aprimo/pb/intera.htm>(12/08/2001).  Explorando o Conceito de Interatividade. Definições e Taxionomias. Artigo publicado na revista "Informática na Educação", do PGIE/UFRGS. Online em <http://www.psico.ufrgs.br/~aprimo/pb/pgie.htm> (01/08/2001)

RECUERO, Raquel da C.  Comunidades Virtuais no IRC – Estudo dos Canais #Pelotas, #Mundo e #Brasil. Monografia de conclusão de curso apresentada para a obtenção do bacharelado em Jornalismo pela Universidade Católica de Pelotas. Dezembro de 1998.

ROSS, Murray e LAPPIN, B. W. Community Organization. Theory, principles and practice. Second Edition. Tokyo. Harper International Edition: 1967

RHEINGOLD, Howard.  La Comunidad Virtual: Una Sociedad sin Fronteras. Gedisa Editorial. Colección Limites de La Ciência.  Barcelona, 1994. The Heart of the WELL. In HOLETON, Richard. Composing Cyberspace: Identity, Community and Knowledge in the Eletronic Age.  McGraw-Hill. USA, 1998. A Slice of Life in my Virtual Community. Junho de 1992. Online em gopher://gopher.well.sf.ca.us/00/Community/virtual_communities92 (06/10/1998)

SCIME, Roger. <Cyberville> and the Spirit of Community: Howard Rheingold meet Amitai Etzioni. Online no gopher server da WELL: gopher://gopher.well.com/00/Community/cyberville (10/1998).

SMITH, Ana Du Val. Problems in Conflict managemente in Virtual Communities. In KOLLOCK Peter. e Marc Smith. (organizadores) Communities in Cyberspace. Routledge. New York, 1999.

SPENDER, Dale.  Gender- Bending. In  HOLETON, Richard.  Composing Cyberspace: Identity, Community and Knowledge in the Eletronic Age.  McGraw-Hill. USA, 1998.

TÖTO, Pertti.  Ferdinand Tönies, um Racionalista Romântico. In MIRANDA, Orlando.  Para Ler Ferdinand Tönies. Edusp. São Paulo, 1995.

TURKLE, Sherry. Life on the Screen: Identity in the Age of the  Internet. Touchstone. New York, 1997. Virtuality and its Discontents: Searching for Community in Cyberspace. Adaptado do "Life on the Screen". The American Prospect. 1999. Online em <http://www.prospect.org/archives/24/24turk.html> (04/08/2000).   Identity in the Age of Internet: Living on the MUD. In HOLETON, Richard. Composing Cyberspace: Identity, Community and Knowledge in the Eletronic Age.  McGrawHill. USA, 1998.

WEBER, Max. Conceitos Básicos de Sociologia. Editora Moraes. São Paulo, 1987.Metodologia das Ciências Sociais. Parte 2.  Editora Cortez. São Paulo, 1992.

WELLMAN, Barry e GULIA, Milena. Virtual  Communities as Communities: Net Surfers don't ride Alone. In KOLLOCK Peter

VBA Tips - Inserindo quebra automática - Insert automatic line breaks

Inline image 1
A funcionalidade a seguir teria me poupado muito tempo nas inúmeras vezes que precisei de algo assim. 

Em certas circunstâncias específicas juntamos as informações de inúmeros campos para compor um texto. Ao apresentá-lo, invariavelmente teremos um espaço limitado.

A função abaixo permite que formatemos a frase delimitando onde será realizada a mudança de linha.

Muito útil em highlights de apresentações Powerpoint, quando a composição dos comentários é formada por várias fontes de dados como tabelas e gráficos.

Inline image 2

Pode acelerar muito a composição de Dashboards, onde os comentários são seguidos de números e ranges. O texto ficará automaticamente pré-formatado.

Inline image 4

Inline image 3

Certamente será ainda mais útil na composição de infográficos

Inline image 5


Public   Function BreakTextAtX (_
         varOriginal As Variant, _
Optional strBreakCharacter As String = " ", _
Optional lngMaxLength As Long = 72) As Variant

' Code written by Ken Snell -- 15 November 2008
' strOriginal is the original text string
' strBreakCharacter is the character that is used to break the
'       text into separate lines (e.g., a blank space); if no
'       character is provided to the function, it uses a blank
'       space as the value
' lngMaxLength is the maximum length for each separate line;
'       if no length is provided ot the function, it uses 72
'       as the maximum length

Dim strNewString As String, strWorking As String, strPart As String
Dim strOriginalNoCrLf As String
Dim lngPosition As Long, lngHold As Long, lngLength As Long
Dim lngWorkLength As Long

Let lngLength = Len(varOriginal & "")

If lngLength > 0 Then
      Let strOriginalNoCrLf = Replace(Replace(CStr(varOriginal), vbCr, ""), vbLf, "")
      Let strNewString = ""
      Let lngPosition = 1

      Do While lngPosition <= lngLength
            Let strWorking = Mid(strOriginalNoCrLf, lngPosition, lngMaxLength)
            Let lngWorkLength = Len(strWorking)

            If lngWorkLength < lngMaxLength Then
                  If Len(strNewString) > 0 And Len(strWorking) > 0 Then _
                     Let strNewString = strNewString & vbCrLf
                     Let strNewString = strNewString & strWorking
                  Exit Do
            Else
                  Let lngHold = InStrRev(strWorking, strBreakCharacter)

                  If lngHold = 0 Then Let lngHold = lngWorkLength

                  If Len(strNewString) > 0 Then _
                     Let strNewString = strNewString & vbCrLf
                     Let strNewString = strNewString & Left(strWorking, lngHold)
                     Let lngPosition = lngPosition + lngHold
            End If
      Loop

      Let BreakTextAtX = strNewString
Else
      If IsNull(varOriginal) = True Then
            Let BreakTextAtX = varOriginal
      Else
            Let BreakTextAtX = ""
      End If

End If
End Function

Tags: VBA, Tips, Office, quebra, texto, linha, row, linefeed, line break, quebra, página, highlight

Inspiration: 

Download:


eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine