Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por JuarezCaldana
#40566
Porque esta essa formula não esta efetuando a soma ?

vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
Por osvaldomp
#40571
O comando funciona!
Código: Selecionar todos
vValorTotal = Application.WorksheetFunction.Sum(w.Range("I19:I43"))
MsgBox vValorTotal
outras formas:
Código: Selecionar todos
vValorTotal = Application.Sum(w.Range("I19:I43"))
vValorTotal = Evaluate("sum(" & w.Name & "!I19:I43)")
Avatar do usuário
Por Jimmy
Avatar
#40572
Olá Juarez,

Você definiu algum "W" antes dessa linha de programa?

Jimmy San Juan
Por osvaldomp
#40575
Código: Selecionar todos
Sub 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
Avatar do usuário
Por Jimmy
Avatar
#40577
É, 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
Por JuarezCaldana
#40584
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 .
Avatar do usuário
Por JCabral
Avatar
#40592
Um exemplo concreto, vulgo uma planilha, ajudaria tanto a ajudar.
Avatar do usuário
Por Jimmy
Avatar
#40596
Informar qual erro está dando também ajuda.
Por JuarezCaldana
#40610
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
Avatar do usuário
Por Jimmy
Avatar
#40612
Anexa a planilha
Por osvaldomp
#40629
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 ?
Por JuarezCaldana
#40708
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"))
Por osvaldomp
#40709
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
Por JuarezCaldana
#40710
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
Por osvaldomp
#40712
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.
Por JuarezCaldana
#40749
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.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#40750
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
Por osvaldomp
#40751
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"))
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord