Ao ativar o formulario o codigo que "pesquisa" a ultima linha não restringe planilha, portanto "pega" a que está ativa, e nem todas terão o mesmo numero de registros.
É necesario que seja determinada em cada "IF" o numero de registros para cada sheet. Poderá ser algo assim (somente o trecho afetado:
Private Sub userform_activate()
Dim lastRow As Integer
lastRow = Sheets("Copel").Cells(Cells.Rows.Count, "A").End(xlUp).Row
If Sheets("Copel").Range("D" & lastRow).Text = "Pago" Then
'MsgBox "Nao ha faturas em aberto da Copel", vbInformation
TextBox8.Value = Sheets("Copel").Range("A" & lastRow)
TextBox9.Value = Sheets("Copel").Range("B" & lastRow)
TextBox10.Value = Sheets("Copel").Range("D" & lastRow)
TextBox11.Value = Sheets("Copel").Range("E" & lastRow)
Else
TextBox4.Value = Sheets("Copel").Range("A" & lastRow)
TextBox5.Value = Sheets("Copel").Range("B" & lastRow)
TextBox6.Value = Sheets("Copel").Range("D" & lastRow)
TextBox7.Value = Sheets("Copel").Range("C" & lastRow)
TextBox8.Value = Sheets("Copel").Range("A" & lastRow - 1)
TextBox9.Value = Sheets("Copel").Range("B" & lastRow - 1)
TextBox10.Value = Sheets("Copel").Range("D" & lastRow - 1)
TextBox11.Value = Sheets("Copel").Range("E" & lastRow - 1)
End If
lastRow = Sheets("Tim").Cells(Cells.Rows.Count, "A").End(xlUp).Row
If Sheets("Tim").Range("D" & lastRow).Text = "Pago" Then
'MsgBox "Nao ha faturas em aberto da Tim", vbInformation
TextBox16.Value = Sheets("Tim").Range("A" & lastRow)
TextBox17.Value = Sheets("Tim").Range("B" & lastRow)
TextBox18.Value = Sheets("Tim").Range("D" & lastRow)
TextBox19.Value = Sheets("Tim").Range("E" & lastRow)
Else
TextBox12.Value = Sheets("Tim").Range("A" & lastRow)
TextBox13.Value = Sheets("Tim").Range("B" & lastRow)
TextBox14.Value = Sheets("Tim").Range("D" & lastRow)
TextBox15.Value = Sheets("Tim").Range("C" & lastRow)
TextBox16.Value = Sheets("Tim").Range("A" & lastRow - 1)
TextBox17.Value = Sheets("Tim").Range("B" & lastRow - 1)
TextBox18.Value = Sheets("Tim").Range("D" & lastRow - 1)
TextBox19.Value = Sheets("Tim").Range("E" & lastRow - 1)
End If
lastRow = Sheets("GVT").Cells(Cells.Rows.Count, "A").End(xlUp).Row
If Sheets("GVT").Range("D" & lastRow).Text = "Pago" Then
'MsgBox "Nao ha faturas em aberto da GVT", vbInformation
TextBox24.Value = Sheets("GVT").Range("A" & lastRow)
TextBox25.Value = Sheets("GVT").Range("B" & lastRow)
TextBox26.Value = Sheets("GVT").Range("D" & lastRow)
TextBox27.Value = Sheets("GVT").Range("E" & lastRow)
Else
TextBox20.Value = Sheets("GVT").Range("A" & lastRow)
TextBox21.Value = Sheets("GVT").Range("B" & lastRow)
TextBox22.Value = Sheets("GVT").Range("D" & lastRow)
TextBox23.Value = Sheets("GVT").Range("C" & lastRow)
TextBox24.Value = Sheets("GVT").Range("A" & lastRow - 1)
TextBox25.Value = Sheets("GVT").Range("B" & lastRow - 1)
TextBox26.Value = Sheets("GVT").Range("D" & lastRow - 1)
TextBox27.Value = Sheets("GVT").Range("E" & lastRow - 1)
End If
......
Qto as datas e valores;
Nativamente um TextBox "passa" seus "dados (valores)" como Texto (string); portando para salvar esses dados como numero ou data, os mesmos devem ser convertidos.
Tambem uma formatação previa das celulas/colunas da planilha que ira receber esses dados e recomendado.
Ficara algo assim (somente trecho afetado):
....
ActiveCell.Offset(lastRow - 1, 0).Value = CDate(TxtData.Text)
ActiveCell.Offset(lastRow - 1, 1).Value = CStr(TxtValor.Text)
....
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 03/11/2012 7:58 am