Desculpe, achei que fosse algo simples.
Bom, segue o código completo do Botão Ok
Private Sub btnOk_Click()
' Cria a variável de controle do loop
Dim i, linha As Integer
' Cria a variável de controle da quantidade
Dim vQtde As Integer
' Cria um array de Labels
Dim TLabell(1 To 99) As Control
' Controla o topo
Dim intTopL, intTopC As Integer
' Cria o frame para questão
Dim fraQuestao As MSForms.Frame
' Cria um array de Combobox
Dim TCombobox(1 To 99) As Control
' Cria um array para as colunas do Excel [ALTERAR]
Dim sCell(1 To 50) As String
sCell(1) = "A"
sCell(2) = "B"
sCell(3) = "C"
sCell(4) = "D"
sCell(5) = "E"
sCell(6) = "F"
sCell(7) = "G"
sCell(8) = "H"
sCell(9) = "I"
sCell(10) = "J"
sCell(11) = "K"
sCell(12) = "L"
sCell(13) = "M"
sCell(14) = "N"
sCell(15) = "O"
sCell(16) = "P"
sCell(17) = "Q"
sCell(18) = "R"
sCell(19) = "S"
sCell(20) = "T"
sCell(21) = "U"
sCell(22) = "V"
sCell(23) = "W"
sCell(24) = "X"
sCell(25) = "Y"
sCell(26) = "Z"
sCell(27) = "AA"
sCell(28) = "AB"
sCell(29) = "AC"
sCell(30) = "AD"
sCell(31) = "AE"
sCell(32) = "AF"
sCell(33) = "AG"
sCell(34) = "AH"
sCell(35) = "AI"
sCell(36) = "AJ"
sCell(37) = "AK"
sCell(38) = "AL"
sCell(39) = "AM"
sCell(40) = "AN"
sCell(41) = "AO"
sCell(42) = "AP"
sCell(43) = "AQ"
sCell(44) = "AR"
sCell(45) = "AS"
sCell(46) = "AT"
sCell(47) = "AU"
sCell(48) = "AV"
sCell(49) = "AW"
sCell(50) = "AY"
' Verifica se foi digitada uma quantidade no Textbox Quantidade
If tbxQtdeQuest.Value = "" Then
MsgBox ("O campo Quantidade de questões é obrigatório!")
tbxQtdeQuest.SetFocus
Exit Sub
End If
' Cria o frame
Set fraQuestao = Me.Controls.Add("Forms.Frame.1")
' Propriedades do frame
fraQuestao.Top = 138
fraQuestao.Left = 6
fraQuestao.Width = 312
fraQuestao.Caption = "Questões"
' Scrollbar
fraQuestao.ScrollBars = fmScrollBarsVertical
fraQuestao.ScrollHeight = fraQuestao.InsideHeight * 20
fraQuestao.ScrollWidth = fraQuestao.InsideWidth * 20
' Pega o valor digitado no campo Quantidade
vQtde = tbxQtdeQuest.Value
' Cria os campos de acordo com a quantidade no campo quantidade
For i = 3 To vQtde + 2
' Cria os labels de acordo com o índice
Set TLabell(i) = fraQuestao.Controls.Add("Forms.Label.1", "lblQuestao" & i)
' Cria os combobox de acordo com o índice
Set TCombobox(i) = fraQuestao.Controls.Add("Forms.Combobox.1", "cbxQuestao" & i)
' Verificar como limpar o Combobox [VERIFICAR AQUI]
TCombobox(i).ListIndex = -1
TCombobox(i).Clear
TCombobox(i).Value = ""
' Propriedades do Label
' Fonte
TLabell(i).Font.Bold = True
TLabell(i).Font.Size = 12
' Altura e posição
TLabell(i).Top = intTopL + 6
TLabell(i).Left = 6
TLabell(i).Height = 13
TLabell(i).Width = 280
' Preenche o caption de acordo com cada primeira linha da coluna
TLabell(i).Caption = Worksheets("Dados").Cells(1, i).Value
' Propriedades do Combobox
' Altura e posição
TCombobox(i).Left = 6
TCombobox(i).Top = intTopC + 24
TCombobox(i).Height = 15
TCombobox(i).Width = 280
' Inicia pela segunda linha, pois a primeira é para o Label
linha = 2
' Realiza o controle de linhas que não estão em branco por coluna
Do Until Worksheets("Dados").Range(sCell(i) & linha).Value = ""
TCombobox(i).AddItem Worksheets("Dados").Range(sCell(i) & linha).Value
linha = linha + 1
Loop
' Atualiza o topo
intTopL = intTopL + 38
intTopC = intTopC + 38
Next i
End Sub
Segue o código completo do botão Salvar
Private Sub btnSalvar_Click()
' Cria a variável linha
Dim linhaVazia As Long
' Cria a variável de controle do loop
Dim i As Integer
' Verifica o total de Combobox
Dim vQtde As Integer
' Controle de linha para ID
Dim lUltima As Long
' Confere se o campo Nome foi preenchido
If tbxNome.Value = "" Then
MsgBox ("O campo nome é obrigatório")
tbxNome.SetFocus
Exit Sub
End If
' Deixa visível o formulário Respostas
ThisWorkbook.Sheets("Respostas").Visible = xlSheetVisible
' Seleciona a aba "Respostas"
Sheets("Respostas").Select
' Conta quantas informações foram inseridas
linhaVazia = WorksheetFunction.CountA(Range("A:A")) + 1
If IsNumeric(Sheets("Respostas").Cells(linhaVazia - 1, 1).Value) Then
lUltima = Sheets("Respostas").Cells(linhaVazia - 1, 1).Value + 1
Else
lUltima = 1
End If
' Insere a informação para o ID
Cells(linhaVazia, 1).Value = lUltima
' Insere informações para a aba Respostas
Cells(linhaVazia, 2).Value = tbxNome.Value
vQtde = tbxQtdeQuest.Value
' Cria os campos de acordo com o valor do campo Quantidade
For i = 3 To vQtde + 2
' Adiciona o valor para a primeira coluna (títulos)
Cells(1, i).Value = frmQuestao.Controls("lblQuestao" & i).Caption
' Adiciona o valor para as demais colunas (dados)
Cells(linhaVazia, i).Value = frmQuestao.Controls("cbxQuestao" & i).Value
Next
' Mostra mensagem informando que os dados foram inseridos com sucesso.
MsgBox ("Informação inserida com sucesso")
' Volta para a aba MENU
Sheets("MENU").Select
' Esconde as outras planilhas
ThisWorkbook.Sheets("Dados").Visible = xlSheetHidden
ThisWorkbook.Sheets("Respostas").Visible = xlSheetHidden
End Sub
Em anexo, segue a planilha que estou fazendo.
A minha dúvida é que não está alterando, em uma segunda vez, os registros na hora de salvar na tela Cadastrar.
Observação: A versão que estou usando é 2013, mas será executado no 2007.
Postado : 09/02/2015 6:22 am