J'essaie d'insérer ce caractère "-" au début de chaque texte dans la colonne F.

Mon F coloum ressemble à ceci:

BP850
BP851
BT100
GP160
GP161

J'ai déjà essayé d'utiliser ce code sans succès:

Option Explicit

Sub test()

    Dim LastRow As Long, i As Long
    Dim str As String

'Change sheet if needed
    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column F
        LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

'Loop column F
        For i = 1 To LastRow
            'Replace the first occurance
            str = Replace(.Range("F" & i).Value, "", "-", 1, 1)
            .Range("F" & i).Value = str
        Next i

    End With

End Sub

Le résultat que j'attends est le suivant:

-BP850
-BP851
-BT100
-GP160
-GP161

J'espère vraiment dans votre aide, merci.

2
duskembrace 4 nov. 2019 à 09:09

6 réponses

Comme alternative, vous pouvez essayer d'utiliser .Evaluate. Cela évite d'avoir besoin d'une boucle:

enter image description here

Option Explicit

Sub test()

    Dim LastRow As Long
    Dim rng As Range

'Change sheet if needed
    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column F
        LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
        Set rng = .Range("F1:F" & LastRow)
        rng.Value = .Evaluate("""'-""&" & rng.Address)
    End With

End Sub

enter image description here

3
JvdV 4 nov. 2019 à 08:35

Essayez ceci, ie. ajoutez "'-" devant la valeur. Notez la citation unique avant le -

For i = 1 To lastRow
  If .Range("F" & i).Value <> "" Then
    If Left(.Range("F" & i).Value, 1) <> "-" Then
      .Range("F" & i).Value = "'-" & .Range("F" & i).Value
    End If
  End If
Next i
2
SNicolaou 4 nov. 2019 à 07:05

Votre str = Replace(.Range("F" & i).Value, "", "-", 1, 1) a un problème. Modifiez-le comme suit:

    For i = 1 To LastRow
        .Range("F" & i).Value = "-" & .Range("F" & i).Value
    Next i

Pas besoin d'utiliser la variable str ici.

2
Dhirendra Kumar 4 nov. 2019 à 06:54

Voyez si l'approche suivante aide. Il vérifiera également

  1. La cellule n'est pas vide

  2. La cellule ne commence pas par "-"

Ce qui devrait aider en cas de réexécution accidentelle de la macro!

Option Explicit

Sub test2()
    Dim LastRow As Long, i As Long
    'Change sheet if needed
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column F
         LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
        'Loop column F
        For i = 1 To LastRow
            If Len(.Range("F" & i).Value) > 0 And Left(.Range("F" & i).Value, 1) <> "-" Then _
            .Range("F" & i).Value = "-" & .Range("F" & i).Value
        Next i
    End With
    Application.ScreenUpdating = True
End Sub
2
shrivallabha.redij 4 nov. 2019 à 07:00

Au lieu d'utiliser replace, il suffit de concaténer "-" avant str

Sub test()

    Dim LastRow As Long, i As Long
    Dim str As String

'Change sheet if needed
    With ThisWorkbook.Worksheets("Sheet1")
        'Find the last row of column F
        LastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

'Loop column F
        For i = 1 To LastRow
            'Replace the first occurance
            str = "-" & .Range("F" & i).Value  '<== EDIT
            .Range("F" & i).Value = str
        Next i

    End With

End Sub
2
Mark Fitzgerald 4 nov. 2019 à 07:02
Option Explicit

Sub test()

    Dim LastRow As Long, i As Long
    Dim AdditionString As String, CellString As String, CompleteString As String

    AdditionString = "'-"

    With ThisWorkbook.Worksheets("Sheet1")

         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

         For i = 1 To LastRow

            CellString = .Range("A" & i).Value
            CompleteString = AdditionString & CellString
            .Range("A" & i).Value = CompleteString

         Next i

    End With

End Sub
1
Error 1004 4 nov. 2019 à 07:18