Καλημέρα
Σε πρώτη ανάγνωση, αν αλλάξει η γραμμή:
c.Offset(0, 1).Value = cell.Value
σε:
c.Offset(0, 1).Value = c.Value
ο κώδικας δουλεύει.
Παρατήρηση:
Ο κώδικας λειτουργεί με την
επιλογή (Selection).
Αυτό, σίγουρα θα δημιουργήσει προβλήματα,
αν ο χρήστης ξεχαστεί και επιλέξει ένα κελί η περιοχή,
σε στήλη διαφορετική από την 1 (A) στην οποία
ίσως θέλει να εργάζεται.
Αν και δεν γνωρίζουμε πως χρησιμοποιείς την εντολή,
καλό θα ήταν να προσδιοριστεί το που θα εκτελείται.
Παράδειγμα:
Κώδικας:
Sub MoveRedText1()
Dim c As Range, rng As Range
Set rng = Φύλλο1.Range("a1:a12")
For Each c In rng
If c.Font.Color = vbRed Then
c.Offset(0, 1).Value = c.Value
c.Offset(0, 1).Font.Color = vbRed
c.ClearContents
c.Font.Color = vbBlack
End If
Next c
End Sub
Αυτό λειτουργεί πάντα στο Φύλλο1 (κωδικό όνομα)
και στην περιοχή a1:a12, ανεξάρτητα επιλογής.
Από την άλλη, ένα ακόμα μειονέκτημα, είναι ότι τα χρώματα γραμματοσειράς,
θα πρέπει να είναι κόκκινο καθαρό (255,0,0) και μαύρο αυτόματο (0,0,0)