none
Limitar caracteres e tipo de caracteres RRS feed

  • Pergunta

  •  Pessoal bom dia,

     Preciso de uma ajuda.

    Eu tenho uma planilha desta forma:

    E quero limitar quantidade de caracteres e o tipo

    Na coluna segment quero limitar em 6 caracteres, se for menos que 6 ou mais que 6. Retorna a msg "Limite de caracteres não atingido"

    Na coluna date quero limitar a tipo date em 8 caracteres,se for menos que 8 ou mais que 8. Retorna a msg "Limite de caracteres não atingido"

    E na coluna number quero limitar a tipo numero em 4 caracteres,se for menos que 4 ou mais que 4. Retorna a msg "Limite de caracteres não atingido"

    Eu comecei a escrever algo, mas não estou enxergando aonde estou errando. E sinceramente há muito tempo não escrevo codigo VBA

    Não estou lembrada como selecionar a coluna e colocar a macro.

    'Se não houver 4 números'
    If IntTamanho <> 4 Then
    MsgBox "Limite de Caracteres não Atingido ", vbCritical
    Application.EnableEvents = False
    Rng.ClearContents
    Application.EnableEvents = True
    

    Se alguem puder ajudar, eu já agradeço

    Obrigada


    quinta-feira, 9 de novembro de 2017 13:14

Respostas

  • Sub LimitarCaractere()
    
    Dim TRACKER As Workbook '<-- Tracker
    Dim MARKET As Worksheet '<-- Aba
    Dim i As Long           '<-- Linha selecionada
    Dim SEGM As String      '<-- Segment
    Dim FLT As Integer     '<-- Flight
    Dim Ddate As Date     '<-- Date
    
    Set TRACKER = ActiveWorkbook
    Set MARKET = TRACKER.ActiveSheet
    i = ActiveCell.Row
    
    'Limita o número de cacteres na célula
    If LEN (RANGE("B" & i)) > 6 Then
         ActiveCell.VALUE = Left(ActiveCell.VALUE, 6)
        MsgBox "Limite de caracteres Ultrapassado na Célula: " _
        & ActiveCell
    End If
    End Sub


    Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quinta-feira, 9 de novembro de 2017 17:10
    • Marcado como Resposta Thaís Sakamoto quinta-feira, 9 de novembro de 2017 17:40
    quinta-feira, 9 de novembro de 2017 17:10

Todas as Respostas

  • Target.value refere-se à célula em que você está digitando.

    Anderson Diniz diniabr2011@gmail.com

    quinta-feira, 9 de novembro de 2017 13:58
  • Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim linha As Long
        'se selecionar uma célula da coluna3
        If Target.Column = 3 Then
            'mantém a mesma linha da célula selecionada
            linha = Target.Row
            'se não for a linha 1
            If linha <> 1 Then
                'se a célula não estiver em branco
                
                If ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value <> "" Then
                    'se a célula da coluna 2 tiver menos de 6 caracteres
                    
                    If Len(ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value) <> 6 Then
                        'limpa o conteúdo da célula da coluna 2
                        ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value = ""
                        'exibe a mensagem
                        MsgBox "Não atingiu número de caracteres"
                        
                    End If
                End If
            End If
        End If
        
        'se selecionar uma célula da coluna2
        If Target.Column = 2 Then
            'considera a célula da mesma coluna, uma linha acima
            linha = Target.Row - 1
            'se não for a linha 1
            If linha <> 1 Then
                'se a célula não estiver em branco
                If ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value <> "" Then
                    
                    'se a célula da linha acima tiver menos de 6 caracteres
                    If Len(ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value) <> 6 Then
                        'limpa o conteúdo da célula da linha acima
                        ThisWorkbook.Sheets("Planilha1").Cells(linha, 2).Value = ""
                        ' exibe a mensagem
                        MsgBox "Não atingiu número de caracteres"
                        
                    End If
                End If
            End If
        End If
        
    End Sub
    


    Anderson Diniz diniabr2011@gmail.com

    quinta-feira, 9 de novembro de 2017 15:37
  • Adaptei o código desta forma:

    Se alguém puder me ajudar. A macro roda mas não limita os caracteres

    Sub LimitarCaractere()
    
    Dim TRACKER As Workbook '<-- Tracker
    Dim MARKET As Worksheet '<-- Aba
    Dim i As Long           '<-- Linha selecionada
    Dim SEGM As String      '<-- Segment
    Dim FLT As Integer     '<-- Flight
    Dim Ddate As Date     '<-- Date
    
    Set TRACKER = ActiveWorkbook
    Set MARKET = TRACKER.ActiveSheet
    i = ActiveCell.Row
    
    'Limita o número de cacteres na célula
    If i > 6 Then
         ActiveCell = Left(ActiveCell, 6)
        MsgBox "Limite de caracteres Ultrapassado na Célula: " _
        & ActiveCell
    End If
    End Sub
    Obrigada

    quinta-feira, 9 de novembro de 2017 16:36
  • Sub LimitarCaractere()
    
    Dim TRACKER As Workbook '<-- Tracker
    Dim MARKET As Worksheet '<-- Aba
    Dim i As Long           '<-- Linha selecionada
    Dim SEGM As String      '<-- Segment
    Dim FLT As Integer     '<-- Flight
    Dim Ddate As Date     '<-- Date
    
    Set TRACKER = ActiveWorkbook
    Set MARKET = TRACKER.ActiveSheet
    i = ActiveCell.Row
    
    'Limita o número de cacteres na célula
    If LEN (RANGE("B" & i)) > 6 Then
         ActiveCell.VALUE = Left(ActiveCell.VALUE, 6)
        MsgBox "Limite de caracteres Ultrapassado na Célula: " _
        & ActiveCell
    End If
    End Sub


    Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 quinta-feira, 9 de novembro de 2017 17:10
    • Marcado como Resposta Thaís Sakamoto quinta-feira, 9 de novembro de 2017 17:40
    quinta-feira, 9 de novembro de 2017 17:10
  • Sub LimitarCaractere()
    
    Dim TRACKER As Workbook '<-- Tracker
    Dim MARKET As Worksheet '<-- Aba
    Dim i As Long           '<-- Linha selecionada
    Dim SEGM As String      '<-- Segment
    Dim FLT As Integer     '<-- Flight
    Dim Ddate As Date     '<-- Date
    
    Set TRACKER = ActiveWorkbook
    Set MARKET = TRACKER.ActiveSheet
    i = ActiveCell.Row
    
    'Limita o número de cacteres na célula
    If LEN (ACTIVECELL.VALUE) > 6 Then
         ActiveCell.VALUE = Left(ActiveCell.VALUE, 6)
        MsgBox "Limite de caracteres Ultrapassado na Célula: " _
        & ActiveCell
    End If
    End Sub


    Anderson Diniz diniabr2011@gmail.com

    quinta-feira, 9 de novembro de 2017 17:19