Página 1 de 1
Duvida
Enviado: 25 Jan 2019 às 22:24
por JuarezCaldana
Porque esta essa formula não esta efetuando a soma ?
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
Re: Duvida
Enviado: 26 Jan 2019 às 06:51
por osvaldomp
O comando funciona!
Código: Selecionar todosvValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
MsgBox vValorTotal
outras formas:
Código: Selecionar todosvValorTotal = Application.Sum(w.Range("I19:I43"))
vValorTotal = Evaluate("sum(" & w.Name & "!I19:I43)")
Re: Duvida
Enviado: 26 Jan 2019 às 11:36
por Jimmy
Olá Juarez,
Você definiu algum "W" antes dessa linha de programa?
Jimmy San Juan
Re: Duvida
Enviado: 26 Jan 2019 às 13:56
por osvaldomp
Código: Selecionar todosSub RetornaSoma()
Dim vValorTotal As Double, w As Worksheet
Set w = ActiveSheet 'ou Set w = Sheets("Plan1") ajuste o nome da planilha
vValorTotal = Application.Sum(w.Range("I19:I43"))
MsgBox vValorTotal
End Sub
Duvida
Enviado: 26 Jan 2019 às 14:11
por Jimmy
É, eu acho que o que falta é isso.
Ou use oSET, ou use direto na linha de comando.
Ex.:
vValorTotal = Application.Sum(Range("I19:I43"))
ou
vValorTotal = Application.Sum(Sheets("Plan1").Range("I19:I43"))
Jimmy San Juan
Duvida
Enviado: 26 Jan 2019 às 20:20
por JuarezCaldana
Ainda nada vou acrescentar mais dados.
Private Sub UserForm_Activate()
Dim w As Worksheet
Dim vValorTotal As Double
Set w = Sheets("Orçamento Matriz")
w.Select
VItens = Application.WorksheetFunction.CountA(w.Range("C19:C43"))
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
Pessoal esta faltando mais linhas mas a que esta com problemas é essa ultima .
Duvida
Enviado: 26 Jan 2019 às 22:07
por JCabral
Um exemplo concreto, vulgo uma planilha, ajudaria tanto a ajudar.
Re: Duvida
Enviado: 27 Jan 2019 às 05:57
por Jimmy
Informar qual erro está dando também ajuda.
Re: Duvida
Enviado: 27 Jan 2019 às 20:25
por JuarezCaldana
Vamos ver se eu consigo explicar é um formulário de cadastro de produtos, com vários formulários clientes , produtos orçamentos etc.
O formulário em questão frmOrcamento
que carrega os dados na planilha Orçamentos Salvos.
a linha vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43")) não da erro apenas não aparece soma no formulário na lblValorTotal
Vou passar alinha de código inteira.
Private Sub UserForm_Activate()
Application.ScreenUpdating = False
frmOrcamento.Height = 226
Dim w As Worksheet
Dim UltCel As Range
Dim Ultlin As Long
Dim FaixaCel As Range
Dim VItens As Integer
Dim vValorTotal As Double
Set w = Sheets("Produtos")
w.Select
Ultlin = w.Cells(w.Rows.Count, 1).End(xlUp).Row
Sheets("Listas").Range("E2:F" & Ultlin).ClearContents
'Cria uma lista de repetições
w.Range("B2").Resize(Ultlin, 2).AdvancedFilter Action:=xlFilterCopy, _
copytorange:=Sheets("Listas").Range("E2"), unique:=True
Set w = Sheets("listas")
w.Select
'Classificar os Dados
'-------------------------------
w.Sort.SortFields.Clear
w.Sort.SortFields.Add Key:=Range("E2"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
Ultlin = w.Cells(w.Rows.Count, 5).End(xlUp).Row
With w.Sort
.SetRange Range("E2:F" & Ultlin)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
' Apagar faixa de nome atual
' ----------------------------------
ActiveWorkbook.Names("_Produtos").Delete
'cria nova faixa
'---------------------------------------
Set UltCel = w.Cells(w.Rows.Count, 5).End(xlUp)
ActiveWorkbook.Names.Add Name:="_Produtos", RefersTo:=w.Range("E2:F" & UltCel.Row)
frmOrcamento.cmbProduto.RowSource = "_Produtos"
'atualiza os demais campos
'----------------------------------------
Set w = Sheets("Orçamento Matriz")
w.Select
VItens = Application.WorksheetFunction.CountA(w.Range("C19:C43")) ' OBS: Essa aqui funciona normal.
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43")) 'Já esta não efetua soma porem não da erro
'Transportar valores para o formulario
'-----------------------------------
With frmOrcamento
.lblItens.Caption = VItens
.lblValorTotal.Caption = Format(vValorTotal, "R$ #,##0.00")
.cmbCliente.Enabled = False
End With
With w.Range("F45")
.Value = frmOrcamento.lblItens.Caption
.HorizontalAlignment = xlCenter
End With
With w.Range("F46")
.Value = CCur(frmOrcamento.lblValorTotal.Caption)
.HorizontalAlignment = xlCenter
End With
'Cadastrar Clientes
'--------------------------
Set w = Sheets("Clientes")
w.Select
w.Range("B2").Select
Do While ActiveCell <> ""
frmOrcamento.cmbCliente.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
frmOrcamento.cmbProduto.Enabled = True
frmOrcamento.cmbProduto.SetFocus
Application.ScreenUpdating = True
End Sub
Duvida
Enviado: 27 Jan 2019 às 22:44
por Jimmy
Anexa a planilha
Re: Duvida
Enviado: 28 Jan 2019 às 10:11
por osvaldomp
1. qual o conteúdo do intervalo I19:I43 da planilha Orçamento Matriz ?
2. se houver fórmulas no intervalo citado acima coloque aqui uma cópia da fórmula
3. qual o resultado desta fórmula colocada em uma célula vazia da planilha Orçamento Matriz ? ~~~> =CONT.NÚM(I19:I43)
4. qual valor é carregado em .lblValorTotal.Caption ?
Re: Duvida
Enviado: 29 Jan 2019 às 18:42
por JuarezCaldana
1. qual o conteúdo do intervalo I19:I43 da planilha Orçamento Matriz ?
R$ 4 5,00
R$ 3 0,00
R$ 3 6,00
R$ 3 0,00
2. se houver fórmulas no intervalo citado acima coloque aqui uma cópia da fórmula
Não tem formulas só valores
3. qual o resultado desta fórmula colocada em uma célula vazia da planilha Orçamento Matriz ? ~~~> =CONT.NÚM(I19:I43)
R$ 0,00 da esse resultado não efetua a soma nas células (I19:I43)
4. qual valor é carregado em .lblValorTotal.Caption ?
Deveria ser a soma do das células (I19:I43)
R$ 4 5,00
R$ 3 0,00
R$ 3 6,00
R$ 3 0,00
só que da R$0,00 e a linha que faz essa soma é :
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
Re: Duvida
Enviado: 29 Jan 2019 às 18:54
por osvaldomp
Provavelmente a causa do problema é que no intervalo I19:I43 há conteúdos formados por algarismos porém não são números, são textos.
Para corrigir formate o intervalo como Geral / mantenha o intervalo selecionado / menu Dados / Texto para colunas / Concluir
Re: Duvida
Enviado: 29 Jan 2019 às 19:46
por JuarezCaldana
Estou fazendo esse projeto se puder dar uma olhada quem sabe facilita vc pode me ajudar ou até outra forma de fazer a soma que preciso desde já fico grato para melhor entender veja tb o vídeo anterior.
https://youtu.be/MWDdQ4sIHrE
Re: Duvida
Enviado: 29 Jan 2019 às 20:43
por osvaldomp
Não acessei o que você postou no link.
Ainda, você não respondeu se fez o que eu sugeri.
Disponibilize uma amostra do seu arquivo Excel diretamente aqui no fórum.
Re: Duvida
Enviado: 30 Jan 2019 às 17:13
por JuarezCaldana
Boa tarde osvaldomp fiz sim não deu gostaria de te mandar o arquivo pra vc dar uma olhada mas não sei como fazer ainda, se puder me ajudar dai vc me ajuda solucionar o que esta errado.
Re: Duvida
Enviado: 30 Jan 2019 às 18:05
por Jimmy
Olá Juarez,
Na faixa somada (I9:I43) não há valores. Aparentemente há valores monetários, mas o Excel os trata como texto.
Na I9 consta
R$ 4 5,00
O primeiro problema é que o sinal da moeda
R$ nunca deve ser digitado. A célula deve conter apenas o 45 digitado. O sinal de moeda deve ser colocado na célula via formatação:
- clique sobre a célula (no seu caso, a faixa toda)
- Tecle CTRL + 1 para abrir a janela de formatação
- Escolha MOEDA na relação de categorias
- Clique em OK.
Fora isso, há um espaço entre o 4 e o 5, e isso também faz o Excel achar que aquilo não é número, é texto.
Tire os espaços entre o primeiro e segundo dígitos, de todas as células.
Se tiver dúvida, faça igual fez na coluna anterior, a H, pois lá está como eu falei.
Teste e dê retorno.
Jimmy San Juan
Re: Duvida
Enviado: 30 Jan 2019 às 18:44
por osvaldomp
Os valores em I19:I43 são obtidos de outro aplicativo? Bem doido ...
Para resolver, antes do comando que atribui valor à variável
vValorTotal , acrescente o trecho em vermelho, conforme abaixo.
...
With Range("I19:I43")
.Replace " ", ""
.Replace "R$", ""
.TextToColumns
.Style = "Currency"
End With
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))