Bom dia
Este código faz parte um módulo para extrair dados de um formulário para o excel e está a funcionar, mas pretendia evitar que ele percorre-se todos os controles até que encontrasse a legenda correta.
Tem como substituir o código a vermelho por algo semelhante a este:
Dim ctl As Control
Dim NomeCampo As String
Set Ctl = "Rot" + Rd.Fields(i).Name
NomeCampo = ctl.Caption
------------------------------------------------------------
intCampos = Rd.Fields.count
For i = 0 To intCampos - 1
Dim ctl As Control
Dim NomeCampo As String
NomeCampo = Rd.Fields(i).Name
For Each ctl In Screen.ActiveForm.Controls
If ctl.Name = "Rot" + Rd.Fields(i).Name Then
NomeCampo = ctl.Caption
End If
Next
XPlanilha.Cells(2, i + 1).Value = NomeCampo
XPlanilha.Cells(2, i + 1).Font.Bold = True
Next i
Este código faz parte um módulo para extrair dados de um formulário para o excel e está a funcionar, mas pretendia evitar que ele percorre-se todos os controles até que encontrasse a legenda correta.
Tem como substituir o código a vermelho por algo semelhante a este:
Dim ctl As Control
Dim NomeCampo As String
Set Ctl = "Rot" + Rd.Fields(i).Name
NomeCampo = ctl.Caption
------------------------------------------------------------
intCampos = Rd.Fields.count
For i = 0 To intCampos - 1
Dim ctl As Control
Dim NomeCampo As String
NomeCampo = Rd.Fields(i).Name
For Each ctl In Screen.ActiveForm.Controls
If ctl.Name = "Rot" + Rd.Fields(i).Name Then
NomeCampo = ctl.Caption
End If
Next
XPlanilha.Cells(2, i + 1).Value = NomeCampo
XPlanilha.Cells(2, i + 1).Font.Bold = True
Next i