Hallo booboo,
also folgendes Makro geht über die Spalte A des aktuellen Blattes und schaut sich die Werte an. Hat der Wert weniger als 35 Zeichen, wird rechts mit Leerzeichen auf 35 Zeichen aufgefüllt. Ist ein Wert dabei, der mehr als 35 Zeichen lang ist, erfolgt die Meldung der Zeile und das Makro beendet sich.
Anpassen mußt du die Konstante c_ersteWerteZeile mit der Zeilennummer des ersten zu untersuchenden Wertes.
Spalte kann in der Konstanten c_SP angepasst werden, für Spalte B eine 2, für Spalte C eine 3, ...
Auch die gewünschte Gesamtlänge der Artikelnummer kannst Du anpassen, indem Du der Konstanten c_ArtNrSollLaenge die entsprechende Zahl zuweist.
Den Makro bringst Du folgendermassen in die Arbeitsmappe:
(sicherheitshalber erstmal eine Kopie der Arbeitsmappe)
1. Arbeitsmappe öffnen
2. VB-Editor öffnen mit Alt+F11
Links im Projekt-Fenster findest Du VBAProject(Dateiname)
3. VBAProject(Dateiname) -> rechte Maustaste->Einfügen->Modul
Es öffnet sich das Modulfenster.
4. In das Modulfenster kopierst Du per Copy und Paste den Makro.
5. Anpassungen der Konstanten
6. mit Alt+S speichern
7. mit Alt+Q den VB-Editor schliessen
8. Makro ausprobieren -> Alt+F8->ArtNrAufStringLange35BlancsRechtsAuffuellen auswählen -> Ausführen
Gruß Matjes
Code:
Sub ArtNrAufStringLange35BlancsRechtsAuffuellen()
Const c_SP = 1->Spalte A
Const c_ersteWerteZeile = 1->erste Zeile mit ArtNr ggf. anpassen!!!
Const c_ArtNrSollLaenge = 35
Dim ws As Worksheet, l_zeilemax As Long, s_tmp As String, z As Long
Set ws = ActiveSheet
->letzte Zeile bestimmen
l_zeilemax = ws.Cells(ws.Rows.Count, c_SP).End(xlUp).Row
For z = c_ersteWerteZeile To l_zeilemax
->Wert aus Zelle
s_tmp = ws.Cells(z, c_SP).Value
If Len(s_tmp) > c_ArtNrSollLaenge Then
MsgBox (In Zeile & z & hat dir Artikelnummer mehr als & _
c_ArtNrSollLaenge & Character !!! -> Abbruch)
GoTo Aufraeumen
End If
->rechts mit Leerzeichen auffüllen
If Len(s_tmp) < c_ArtNrSollLaenge Then
s_tmp = s_tmp & String(c_ArtNrSollLaenge - Len(s_tmp), Chr(32))
End If
->zurueckschreiben
->Format als Text setzen
ws.Cells(z, c_SP).NumberFormat = @
ws.Cells(z, c_SP).Value = s_tmp
Next
Aufraeumen:
Set ws = Nothing
End Sub