Inquiridor
Carregamento de informações de dados na ListBox

Pergunta
-
Caros amigos, estou criando um Sistema de Controle de Orçamentos no Office 2010. Porém o seguinte código, está exibindo esta mensagem de alerta quando depurado: Erro de Compilação Método ou membro de dados não encontrados (Erro 461)
Private Sub cmbOrcamento_Change()
Application.ScreenUpdating = False
Dim vOrcamento As Long
Dim vContarElementos As Integer
Dim W As Worksheet
Dim UltCel As Range
vOrcamento = frmImprimir.cmbOrcamento.Column(0)
vContarElementos = 0
frmImprimir.lstItens.Enabled = True
Set W = Sheets("RegOrcamentos")
W.Select
W.Range(a1).Select
Set UltCel = W.Cells(W.Rows.Count, 1).End(xlUp)
Do While ActiveCell.Row <= UltCel.Row
If ActiveCell.Value = vOrcamento Then
vContarElementos = Application.WorksheetFunction.CountIf(W.Range("A:A"), vOrcamento)
frmImprimir.lblCliente.Caption = ActiveCell.Offset(0, 8).Value 'Colocando o nome do cliente no formulário'
ActiveCell.Offset(0, 1).Resize(vContarElementos, 7).Select
frmImprimir.lblTotal.Caption = _
Format(Application.WorksheetFunction.Sum(ActiveCell.Offset(0, 6) _
.Resize(vContarElementos)), "R$ #,##0,00") 'Colocando o total no formulário'
frmImprimir.lblItens.Caption = _
Application.WorksheetFunction.CountA(ActiveCell.Offset(0, 7).Resize(vContarElementos, 7))
' Apagando a faixa de nomes (_OrcamentoImprimir)
'-----------------------------------------------------------------------------------------------
ActiveWorkbook.Names("_OrcamentoImprimir").Delete
' Criando uma nova lista'
'---------------------------------------------------------------------------------
ActiveWorkbook.Names.Add Name:="_OrcamentoImprimir", RefersToR1C1:="='RegOrcamentos'!R" & _
ActiveCell.Row & "C2:R" & ActiveCell.Row + vContarElementos - 1 & "C8"
With frmImprimir.lblItens
.RowSource = "_OrcamentoImprimir"
.ColumnWidths = "20pt;60pt;120pt;50pt;30pt;50pt;40pt"
.ColumnHeads = False
End With
Exit Do
End If
ActiveCell.Offset(1, 0).Select
Loop
frmImprimir.lstItens.Enabled = False
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Activate()
' Definindo as variáveis para a configuração do formulário ao ser ativado'
'--------------------------------------------------------------------------------
Dim UltLinha As Range
Dim W As Worksheet
Dim UltCel As Range
Dim UltCelLista As Range
Dim vOrc As Long
Dim vEmpresa As String
Set W = Sheets("Listas")
W.Select
W.Range("M:N").EntireColumn.ClearContents
W.Range("M1").Value = "Orçamento"
vOrc = 0
' Classificar os Orçamentos'
'---------------------------------------------------------------------------------
Set W = Sheets("RegOrcamentos")
W.Select
Set UltLinha = W.Cells(W.Rows.Count, 1).End(xlUp)
W.Sort.SortFields.Clear
W.Sort.SortFields.Add Key:=Range("A2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With W.Sort
.SetRange W.Range("A2:I" & UltLinha.Row)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
W.Range("A1").Select
Set UltCel = W.Cells(W.Rows.Count, 1).End(xlUp)
Set UltCelLista = Sheets("Listas").Cells(Rows.Count, 13).End(xlUp).Offset(1, 0)
W.Range("A2").Select
Do While ActiveCell.Row <= UltCel.Row
Set UltCelLista = Sheets("Listas").Cells(Rows.Count, 13).End(xlUp).Offset(1, 0)
If ActiveCell.Value <> vOrc Then
vOrc = ActiveCell.Value
vEmpresa = ActiveCell.Offset(0, 8).Value
Sheets("Listas").Range("M" & UltCelLista.Row).Value = vOrc
Sheets("Listas").Range("N" & UltCelLista.Row).Value = vEmpresa
End If
ActiveCell.Offset(1, 0).Select
Loop
' Apagando a faixa atual de dados nomeada (_Orcamento)
'--------------------------------------------------------------------------------------------
ActiveWorkbook.Names("_Orcamento").Delete
' Criando uma nova faixa'
'--------------------------------------------------------------------------------------------
Set UltCel = Sheets("Listas").Cells(Rows.Count, 13).End(xlUp)
ActiveWorkbook.Names.Add Name:="_Orcamento", _
RefersTo:=Sheets("Listas").Range("M2:N" & UltCel.Row)
With frmImprimir.cmbOrcamento
.RowSource = "_Orcamento"
.ColumnWidths = " 30pt; 200pt"
End With
End SubÉ informado que o erro está aqui: .ColumnWidths = "20pt;60pt;120pt;50pt;30pt;50pt;40pt"!O que devo fazer para corrigir esta situação? Se algum de vocês puder enviar a resposta com a solução ficarei grato.
Todas as Respostas
-
Bem-vindo ao Fórum Zeca.
Para facilitar a leitura dos códigos, por favor utilize o penúltimo botão da barra de ferramentas para inserí-los.
Sobre o problema, me parece estranho, já que o código está correto. A menos que seu Office seja 64 bits, uma vez que nesta versão não há suporte para ListBox. Seria este o caso?
Filipe Magno
-
Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.
---
lblItens parece ser o nome de um controle Label, e não um ListBox.
Tem certeza que sua caixa de listagem chama-se assim mesmo?
http://www.ambienteoffice.com.br || Grupo de WhatsApp: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG