Ir ao conteúdo
  • Cadastre-se

Worksheet_SelectionChange


Ir à solução Resolvido por deejaywesley,

Posts recomendados

Boa tarde, possuo um código que ao clicar em uma célula (Mesclada) aparece uma inputbox, veja abaixo o código: 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)    Application.ScreenUpdating = FalseDim Selection, Resposta As IntegerDim cod As StringDim txtValor As CurrencyIf Not Intersect(Target, Range("Codigo1:Codigo2")) Is Nothing Then    Selection = Application.InputBox("Digite o código", "Código", "Número do código", Type:=1)End IfEnd Sub

"Codigo1:Codigo2", são intervalos renomeados, que seria o mesmo de "D4:D21" e "N4:N21".

Dentro desse parâmetro que ao clicar aparece a inputbox.

Ela funciona perfeitamente, o que meu problema é que tenho um botão que insere linha, e esse botão pega um intervalo dentro do parâmetro e aparece as inputbox, mas eu gostaria que fosse bloqueado essas inputbox quando eu clicasse nesse botão. O botão de inserir linha, sempre vai selecionar a linha acima da "Venda:".Segue desenho para melhor entendimento:

 

post-637514-0-59166600-1432144024_thumb.

 

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

Olá, Leo.

 

Sugiro que você disponibilize também o seu código que insere linha. :rolleyes:

 

 

Aproveite para verificar/encerrar os dois tópicos abaixo que você abriu e abandonou. :crazy:

 

http://forum.clubedohardware.com.br/forums/topic/1117364-dividir-caminho-absoluto-de-nome-do-arquivo/#entry6138483

 

http://forum.clubedohardware.com.br/forums/topic/1110934-macro/#entry6103504

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Léo

 

Você tem que cooperar com a organização do fórum.

Sempre que responderem dê retorno e quando o tópico estiver solucionado, clique em Resolvido, para marcar o tópico como Resolvido.

Clique também em curtir das pessoas que te ajudaram.

 

[]s

 

Patropi - Moderador

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá, Leo.

 

Sugiro que você disponibilize também o seu código que insere linha. :rolleyes:

 

 

Aproveite para verificar/encerrar os dois tópicos abaixo que você abriu e abandonou. :crazy:

 

http://forum.clubedohardware.com.br/forums/topic/1117364-dividir-caminho-absoluto-de-nome-do-arquivo/#entry6138483

 

http://forum.clubedohardware.com.br/forums/topic/1110934-macro/#entry6103504

Sub InserirLinhaRelatorio()' Inserindo linha no campo do Relatório    Application.ScreenUpdating = False            Sheets("Relatório").Unprotect ("2550")    Range("Vendas").Activate    ActiveCell.Offset(-1, 0).Select    Selection.EntireRow.Insert    Intersect(Selection.EntireRow, Range("D:F")).Select    With Selection        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter        .WrapText = False        .Orientation = 0        .AddIndent = False        .IndentLevel = 0        .ShrinkToFit = False        .ReadingOrder = xlContext        .MergeCells = False    End With    Selection.Borders(xlDiagonalDown).LineStyle = xlNone    Selection.Borders(xlDiagonalUp).LineStyle = xlNone    Selection.Merge        Intersect(Selection.EntireRow, Range("G:I")).Select    With Selection        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter        .WrapText = False        .Orientation = 0        .AddIndent = False        .IndentLevel = 0        .ShrinkToFit = False        .ReadingOrder = xlContext        .MergeCells = False    End With    Selection.Borders(xlDiagonalDown).LineStyle = xlNone    Selection.Borders(xlDiagonalUp).LineStyle = xlNone    Selection.Merge    Intersect(Selection.EntireRow, Range("J:L")).Select    With Selection        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter        .WrapText = False        .Orientation = 0        .AddIndent = False        .IndentLevel = 0        .ShrinkToFit = False        .ReadingOrder = xlContext        .MergeCells = False    End With    Selection.Borders(xlDiagonalDown).LineStyle = xlNone    Selection.Borders(xlDiagonalUp).LineStyle = xlNone    Selection.Merge        Intersect(Selection.EntireRow, Range("M:N")).Select    With Selection        .HorizontalAlignment = xlCenter        .VerticalAlignment = xlCenter        .WrapText = False        .Orientation = 0        .AddIndent = False        .IndentLevel = 0        .ShrinkToFit = False        .ReadingOrder = xlContext        .MergeCells = False    End With    Selection.Borders(xlDiagonalDown).LineStyle = xlNone    Selection.Borders(xlDiagonalUp).LineStyle = xlNone    Selection.Merge        ActiveCell.Offset(0, -12).Select    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _        True, AllowFormattingCells:=True, AllowFormattingColumns:=True, _        AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:= _        True, AllowSorting:=True, AllowFiltering:=True, Password:=("2550")End Sub

Esse é o código de inserir linha que uso no botão.

Sobre os tópicos um eu já cliquei em resolvido o outro ainda não tive tempo para poder dar uma olhada, por isso ainda não respondi.

Link para o comentário
Compartilhar em outros sites

Dentro do quadrado em negrito tem que aparecer uma inputbox para que seja inserido um código e não está aparecendo.

Consequência de células mescladas.

 

 

Para contornar o problema altere o comando que sugeri, coloque conforme abaixo.

If Target.Count > 3 Then Exit Sub

 

sugestão - não utilize o recurso "mesclar células", pois células mescladas podem provocar erro em macros e em fórmulas e normalmente são desnecessárias.

Link para o comentário
Compartilhar em outros sites

Para contornar o problema altere o comando que sugeri, coloque conforme abaixo.

If Target.Count > 3 Then Exit Sub

 

sugestão - não utilize o recurso "mesclar células", pois células mescladas podem provocar erro em macros e em fórmulas e normalmente são desnecessárias.

 

Já fiz esse teste, até que funciona para que o código seja inserido, mas ai o problema no botão de inserir linha volta, quando clico no botão aparece 4x para inserir o código.

A mesclagem foi necessário para a minha tabela, uma vez que quando coloca o código aparece o nome do produto, e ele geralmente e maior do que a célula.

Link para o comentário
Compartilhar em outros sites

  • Solução

Bom dia!

 

acho que tem como fazer uma gambiarra ai pra resolver....

 

você pega uma celula que você nunca vai precisar, sei l´tipo a XFD1

ai no vba de inserir codigo, você coloca um IF no inicio que se a celula XFD1 estiver vazia ele roda, se tiver prenchida ele nao faz nada!

 

e no codigo do botao, no inicio você cloca um

 

ranger("XFD1").value = "OK"

ou seja ela vai ta prenchida o outro nao vai rodar

 

e no final dele um

 

ranger("XFD1").value = clear

ela vai ta vazia o outro vai rodar normal...

 

tenta ai... vai que cola.... :lol:

 

:cool:

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Bom dia!

 

acho que tem como fazer uma gambiarra ai pra resolver....

 

você pega uma celula que você nunca vai precisar, sei l´tipo a XFD1

ai no vba de inserir codigo, você coloca um IF no inicio que se a celula XFD1 estiver vazia ele roda, se tiver prenchida ele nao faz nada!

 

e no codigo do botao, no inicio você cloca um

 

ranger("XFD1").value = "OK"

ou seja ela vai ta prenchida o outro nao vai rodar

 

e no final dele um

 

ranger("XFD1").value = clear

ela vai ta vazia o outro vai rodar normal...

 

tenta ai... vai que cola.... :lol:

 

:cool:

 

Funcionou perfeitamente. Obrigado

Link para o comentário
Compartilhar em outros sites

Já fiz esse teste, até que funciona para que o código seja inserido, mas ai o problema no botão de inserir linha volta, quando clico no botão aparece 4x para inserir o código.

Instale o código abaixo (InserirLinhaRelatorio) no lugar do código do post #4

 

A mesclagem foi necessário para a minha tabela, uma vez que quando coloca o código aparece o nome do produto, e ele geralmente e maior do que a célula.

Não conheço nenhum caso em que a mesclagem é necessária. Nem neste seu caso. Em lugar de mesclar utilize o recurso de ajustar a largura da coluna.

Ainda, se quiser obter efeito visual equivalente à mesclagem, selecione o intervalo, por exemplo "D5:F5", clique com o esquerdo sobre a seleção >> Formatar células / Alinhamento / Horizontal / Centralizar seleção / OK

Sub InserirLinhaRelatorio()' Inserindo linha no campo do Relatório  Cells(Range("Vendas").Row - 2, 1).Resize(, 17).Copy  Rows(Range("Vendas").Row - 1).Insert Shift:=xlDown  Application.CutCopyMode = FalseEnd Sub

mantenha esta linha no outro código

If Target.Count > 3 Then Exit Sub
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...