Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Total de itens

    2.183
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Tópicos solucionados

  1. O post de Midori em Falha de segmentação no código. Qual o erro?? foi marcado como solução   
    @André Gomides O ponteiro U só foi declarado e você está tentando atribuir valores a ele antes de fazer qualquer alocação (ou dele apontar para algum endereço com as posições dos elementos já alocadas na memória). Para fazer a alocação dinâmica pode usar a função malloc, p.ex,
    int *U = (int *)malloc(sizeof(int) * (nZ + nV));  
  2. O post de Midori em Falha de segmentação no código. Qual o erro?? foi marcado como solução   
    @André Gomides O ponteiro U só foi declarado e você está tentando atribuir valores a ele antes de fazer qualquer alocação (ou dele apontar para algum endereço com as posições dos elementos já alocadas na memória). Para fazer a alocação dinâmica pode usar a função malloc, p.ex,
    int *U = (int *)malloc(sizeof(int) * (nZ + nV));  
  3. O post de Midori em Falha de segmentação no código. Qual o erro?? foi marcado como solução   
    @André Gomides O ponteiro U só foi declarado e você está tentando atribuir valores a ele antes de fazer qualquer alocação (ou dele apontar para algum endereço com as posições dos elementos já alocadas na memória). Para fazer a alocação dinâmica pode usar a função malloc, p.ex,
    int *U = (int *)malloc(sizeof(int) * (nZ + nV));  
  4. O post de Midori em Erro VBA Botão de Macro foi marcado como solução   
    @Gabriel Gallonetti Antes do Step tem o número 1, assim vai funcionar,
     
    Sub ExcluirLinha() Dim Linha As Long Dim Area As Range Set Area = [B1:B1000] For Linha = Area.Rows.Count To 1 Step -1 If InStr(Area(Linha), "Total") <> 0 Or _ InStr(Area(Linha), "Filial") <> 0 Then Area(Linha).EntireRow.Delete End If Next Linha End Sub  
  5. O post de Midori em Selecionar periodo com variaveis VBA foi marcado como solução   
    Pode ser como Integer e nesse caso não existe propriedade para essa variável como fez em Inicio.Value.
     
     
    Só faltou concatenar Inicio com o outro Range assim,
    Range("A" & Inicio & ":B" & Final).Copy  
    Mas antes de tentar copiar você tem que verificar se as variáveis Inicio e Final receberam os valores das linhas. Se rodar o código sem testar essas variáveis vai dar erro já na primeira iteração que não vai ter atribuído esses valores. Uma forma de controlar isso pode ser assim onde o comando de cópia só acontece quando FIM é encontrado e se Inicio for diferente de zero,
    Sub Macro() Dim Counter As Integer Dim Inicio As Integer Dim Final As Integer For Counter = 1 To 200 Dim curCell As Range Set curCell = Worksheets("ORÇAMENTO").Cells(Counter, 1) If curCell.Value = "INICIO" Then Inicio = curCell.Row ElseIf curCell.Value = "FIM" Then Final = curCell.Row If Inicio <> 0 Then Range("A" & Inicio & ":B" & Final).Copy Worksheets("CONTRATO").Range("A16").PasteSpecial End If Inicio = 0 End If Next Counter End Sub  
  6. O post de Midori em Copiar linha de tabela com macro foi marcado como solução   
    @Nilton Cézar Para evitar a mensagem de erro quando a seleção está fora da tabela,
     
    Sub CopiaLinhaAtiva() With [TabelaRelatório].ListObject If Not Intersect(ActiveCell, .DataBodyRange) Is Nothing Then Dim Linha As Long Linha = ActiveCell.Row - .DataBodyRange.Row + 2 .ListRows.Add Linha .ListRows(Linha - 1).Range.Copy .ListRows(Linha).Range.PasteSpecial Application.CutCopyMode = False End If End With End Sub  
  7. O post de Midori em Inserir um caractere à esquerda de todos os caracteres da celula foi marcado como solução   
    Você pode concatenar os parênteses e o valor com o retorno da função, p.ex,
     
    Dim Valor As Double Valor = 1000000 MsgBox "(" & Valor & " - " & Extenso_Valor(Valor) & ")"  
  8. O post de Midori em código VBA EXCEL (excluir varias linhas baseadas se uma certa palavra existe) foi marcado como solução   
    O correto seria usar cell.Row para pegar a linha de cell e não Rows (com s) que retorna um objeto range. Para listar as linhas e procurar as palavras pode ser só com um loop. Veja se assim resolve,
     
    Sub ExcluiLinha() Dim Area As Range Dim Linha As Long Set Area = [A1:A1000] For Linha = Area.Rows.Count To 1 Step -1 If Area(Linha) = "Filial" _ Or Area(Linha) = "Financeira" Then Area(Linha).EntireRow.Delete End If Next Linha End Sub  
  9. O post de Midori em For no VBA e soma de valores foi marcado como solução   
    @Neodenn Veja se assim resolve,
     
    Sub SomaResultado() Dim Celula As Range Dim Resultado As Range Set Celula = [F100] While Celula.Row > 1 If UCase(Celula) = "RESULTADO" Then Set Resultado = Celula ElseIf UCase(Celula) = "PARE" Then If Not Resultado Is Nothing Then Resultado = WorksheetFunction _ .Sum(Range(Celula, Resultado)) End If Set Resultado = Nothing End If Set Celula = Celula.Offset(-1) Wend End Sub  
  10. O post de Midori em Excel - Identificação de sequencias numéricas foi marcado como solução   
    Concatene as sequencias numa string e compare, p.ex,
     
    Sub Macro() Dim A As String Dim B As String Dim Celula As Range For Each Celula In [A2:C2] A = A & Celula Next Celula For Each Celula In [A4:U4] If Len(B) < 3 Then B = B & Celula Else B = Mid(B, 2, Len(B)) & Celula If A = B Then Celula.Offset(0, -2) _ .Resize(1, 3).Interior.Color = vbYellow End If End If Next Celula End Sub  
    Supondo que a primeira sequencia esteja no range A2:C2, o valor da variável A será essa string "434". E considerando os números em A4:U4, a sequencia será testada no segundo loop.
  11. O post de Midori em Copiar e Colar com Criterios foi marcado como solução   
    Usei PasteSpecial com Values para o caso de ter fórmulas.
     
    Mas se não tem pode remover essa linha e passar o range para o procedimento Copy assim,
     
    Call Celula.Resize(6).Copy([C1].Offset(0, Col))  
  12. O post de Midori em EXCEL - VBA para localizar, copiar e colar arquivos de um diretório em outro foi marcado como solução   
    @Camila Haubert Veja se é algo assim que precisa. O código faz a busca em todas as subpastas de 2021. Não implementei a mensagem dos arquivos copiados, o código é mais para testar se está copiando os arquivos corretamente como comentou,
     
    Const SUBPASTA_2021 As String = _ "\NFS-e\NFS-e\Tributario\Fiscal\" & _ "Setores\NF de entrada\NF compras\2021\" Sub ListaPastas(Pasta As Object, Celula As Range) Dim Arquivo As Object Dim SubPasta As Object For Each Arquivo In Pasta.Files If InStr(Arquivo.Name, Celula.Offset(0, 1)) <> 0 Then If InStr(Arquivo.Name, Celula) <> 0 Then Call Arquivo.Copy(ThisWorkbook.Path & _ "\Apuração_1\Notas Salvas\") Celula.Offset(0, 3) = 1 End If End If Next Arquivo For Each SubPasta In Pasta.SubFolders Call ListaPastas(SubPasta, Celula) Next SubPasta End Sub Sub Macro() Dim Fso As Object Dim Celula As Range Set Fso = CreateObject("Scripting.FileSystemObject") Set Celula = [A2] While Celula <> "" Call ListaPastas( _ Fso.GetFolder(ThisWorkbook.Path & _ SUBPASTA_2021), Celula) Set Celula = Celula.Offset(1) Wend End Sub  
  13. O post de Midori em como contrar letras de uma palavra da string foi marcado como solução   
    Terá que fazer um loop para pegar as letra da string e cada palavra será identificada quando testar o espaço. Use um contador para mostrar a quantidade e recomece a contagem quando esse teste for verdadeiro.
  14. O post de Midori em Macro para excluir duplicados entre duas planilhas foi marcado como solução   
    @Rafael nunes da silva Pode ser feito como comentei acima. Um exemplo do primeiro método, veja se resolve. A macro vai excluir a linha de todos os dados da planilha Excluir com o mesmo código na Plan1.
     
    Sub ExcluirDados() Dim A As Worksheet Dim B As Worksheet Dim Excluir As Range Dim Linha As Long Set A = ThisWorkbook.Sheets("Plan1") Set B = ThisWorkbook.Sheets("EXCLUIR") Set Excluir = B.[A1].CurrentRegion For Linha = Excluir.Rows.Count To 2 Step -1 Set Excluir = B.Cells(Linha, 1) If WorksheetFunction.CountIf(A.[A:A], Excluir) > 0 Then Excluir.EntireRow.Delete End If Next Linha End Sub  
  15. O post de Midori em Macro para excluir duplicados entre duas planilhas foi marcado como solução   
    @Rafael nunes da silva Pode ser feito como comentei acima. Um exemplo do primeiro método, veja se resolve. A macro vai excluir a linha de todos os dados da planilha Excluir com o mesmo código na Plan1.
     
    Sub ExcluirDados() Dim A As Worksheet Dim B As Worksheet Dim Excluir As Range Dim Linha As Long Set A = ThisWorkbook.Sheets("Plan1") Set B = ThisWorkbook.Sheets("EXCLUIR") Set Excluir = B.[A1].CurrentRegion For Linha = Excluir.Rows.Count To 2 Step -1 Set Excluir = B.Cells(Linha, 1) If WorksheetFunction.CountIf(A.[A:A], Excluir) > 0 Then Excluir.EntireRow.Delete End If Next Linha End Sub  
  16. O post de Midori em Macro para excluir duplicados entre duas planilhas foi marcado como solução   
    @Rafael nunes da silva Pode ser feito como comentei acima. Um exemplo do primeiro método, veja se resolve. A macro vai excluir a linha de todos os dados da planilha Excluir com o mesmo código na Plan1.
     
    Sub ExcluirDados() Dim A As Worksheet Dim B As Worksheet Dim Excluir As Range Dim Linha As Long Set A = ThisWorkbook.Sheets("Plan1") Set B = ThisWorkbook.Sheets("EXCLUIR") Set Excluir = B.[A1].CurrentRegion For Linha = Excluir.Rows.Count To 2 Step -1 Set Excluir = B.Cells(Linha, 1) If WorksheetFunction.CountIf(A.[A:A], Excluir) > 0 Then Excluir.EntireRow.Delete End If Next Linha End Sub  
  17. O post de Midori em VBA item selecionado da listbox aparecer na range foi marcado como solução   
    Pode ser assim,
     
    [E11] = ListBox1.List(ListBox1.ListIndex)  
  18. O post de Midori em Tenho um userform e preciso que ele só aceite até 10 cadastros foi marcado como solução   
    @C.Lima2021 Como não sei como está estruturada a sua planilha, foi um exemplo hipotético onde o cadastro da sua planilha começa na célula A1. Assim, supondo que ela tenha dados no range A1:A11, significaria que já está com os 10 cadastros e portanto não seria mais possível cadastrar mais. É isso que o código faz, conta a quantidade de linhas cadastradas e foi o que entendi que você precisa. Então se o cadastro de usuários da sua planilha começa em outra célula, é só adaptar para o seu caso.
     
    Mas se não for isso, explique de outra forma ou anexe o arquivo para facilitar a ajuda, pode ser com dados fictícios.
  19. O post de Midori em Loop copiar dados de várias colunas para outra Aba e transformar em tabela vert foi marcado como solução   
    O código com acréscimo para copiar o mês,
     
    Sub Copia() Dim PlanCXF As Worksheet Dim PlanVendas As Worksheet Dim CelulaSkuBand As Range Dim UltLinha As Long Set PlanCXF = ThisWorkbook.Sheets("Din CXF") Set PlanVendas = ThisWorkbook.Sheets("Previsão de Vendas") Set CelulaSkuBand = PlanCXF.[B3] If PlanVendas.[A2] = "" Then UltLinha = 2 Else UltLinha = PlanVendas.[A1].End(xlDown).Row + 1 End If While CelulaSkuBand <> "" Dim CamposSkuBand As Range Dim DadosSkuBand As Range Dim ContaColunas As Integer Set CamposSkuBand = CelulaSkuBand.Resize(1, 3) Set DadosSkuBand = CelulaSkuBand.Offset(0, 3) ContaColunas = DadosSkuBand.End(xlToRight).Column Set DadosSkuBand = DadosSkuBand.Resize(1, _ ContaColunas - DadosSkuBand.Column + 1) ContaColunas = DadosSkuBand.Columns.Count CamposSkuBand.Copy PlanVendas.Cells(UltLinha, 1). _ Resize(ContaColunas).PasteSpecial Paste:=xlPasteValues DadosSkuBand.Copy PlanVendas.Cells(UltLinha, 4).PasteSpecial _ Paste:=xlPasteValues, Transpose:=True PlanCXF.[E2].Resize(1, ContaColunas).Copy PlanVendas.Cells(UltLinha, 5).PasteSpecial _ Paste:=xlPasteValues, Transpose:=True UltLinha = UltLinha + ContaColunas Set CelulaSkuBand = CelulaSkuBand.Offset(1) Wend Application.CutCopyMode = False End Sub  
  20. O post de Midori em Code Python com , em vez de format foi marcado como solução   
    @Daniel092 Use o operador + em vez de vírgula (GRt + '!').
  21. O post de Midori em ERRO: Método PasteSpecial da classe Range falhou foi marcado como solução   
    @Aline Steffanato Sua tabela não aumentou o range com aos novos dados da última linha adicionada? Aqui aumenta automaticamente inclusive com a formatação. Mas já que não deu certo aí, editei o código para colar os dados. Estava dando erro porque a macro perdia a referência da cópia quando a nova linha era adicionada,
     
    Sub MacroLINHABAIXO() Dim Cadastro As Worksheet Set Cadastro = ThisWorkbook.Sheets("Cadastro") Cadastro.Next.Select Range("A1").Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlUp).Select Selection.ListObject.ListRows.Add AlwaysInsert:=True ActiveCell.Offset(1, 0).Select Cadastro.[K11:T11].Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub  
  22. O post de Midori em ERRO: Método PasteSpecial da classe Range falhou foi marcado como solução   
    @Aline Steffanato Sua tabela não aumentou o range com aos novos dados da última linha adicionada? Aqui aumenta automaticamente inclusive com a formatação. Mas já que não deu certo aí, editei o código para colar os dados. Estava dando erro porque a macro perdia a referência da cópia quando a nova linha era adicionada,
     
    Sub MacroLINHABAIXO() Dim Cadastro As Worksheet Set Cadastro = ThisWorkbook.Sheets("Cadastro") Cadastro.Next.Select Range("A1").Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlUp).Select Selection.ListObject.ListRows.Add AlwaysInsert:=True ActiveCell.Offset(1, 0).Select Cadastro.[K11:T11].Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub  
  23. O post de Midori em ERRO: Método PasteSpecial da classe Range falhou foi marcado como solução   
    @Aline Steffanato Sua tabela não aumentou o range com aos novos dados da última linha adicionada? Aqui aumenta automaticamente inclusive com a formatação. Mas já que não deu certo aí, editei o código para colar os dados. Estava dando erro porque a macro perdia a referência da cópia quando a nova linha era adicionada,
     
    Sub MacroLINHABAIXO() Dim Cadastro As Worksheet Set Cadastro = ThisWorkbook.Sheets("Cadastro") Cadastro.Next.Select Range("A1").Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlDown).Select Selection.End(xlUp).Select Selection.ListObject.ListRows.Add AlwaysInsert:=True ActiveCell.Offset(1, 0).Select Cadastro.[K11:T11].Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub  
  24. O post de Midori em como imprimir nesse formato foi marcado como solução   
    @Nelsonderocha Faça dois loops aninhados: contadores i e j. E mostre no loop mais interno o valor de i se j <= i, senão mostra o x.
  25. O post de Midori em quantos digitos especificos o numero possui foi marcado como solução   
    @Nelsonderocha Com o módulo de um número por 10 você vai conseguir pegar o último dígito de um número inteiro e assim pode testar esse retorno com o dígito e incrementar uma variável quando verdadeiro. Para pegar os próximos é só fazer um loop para ir dividindo o número por 10 enquanto for maior que zero.

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...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.