Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: obeer am Oktober 12, 2015, 13:14:23 Nachmittag

Titel: Ibanfomat in Excel
Beitrag von: obeer am Oktober 12, 2015, 13:14:23 Nachmittag
Hallo alle miteinander,
wir exportieren eine SQL Abfrage nach Excel und möchten diese dann als Serienbriefdatenquelle verwenden.
Da es Mühsam ist, die Leerzeichen manuell enzutippen,hatte ich es erst mit einer Formatierung versucht
(D\E##-#####-#####-#####-#####-##) klappt aber nicht, weil Excel ab der 15. Stelle nur noch Nullen ausgibt.
Also VBA:
************************************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)


    If Not Target.Address < "$O$99" Then Exit Sub
   
    With Target
        .Value = _
            Trim(Format(Replace(.Value, " ", ""), "!&&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&"))
    End With
End Sub

************************************************************************************************
Klappt eigendlich ganz gut, nur wenn ich eine eingegebene Iban wieder löschen will kommt:
Excel funktioniert nicht mehr und das wars.
Dabei beende ich doch die "Sub". Was ist hier falsch?

Vielen Dank im voraus

obeer
Titel: Antw: Ibanfomat in Excel
Beitrag von: gmg-cc am Oktober 12, 2015, 14:28:39 Nachmittag
Moin,

deine gesamze Prozedur einschließlich If Not Target.Address < "$O$99" … ist mi nicht geheuer und auch schwer durchschaubar (sprich: Nicht wirklich transparent).

Wie dem auch sei, ich habe mal für IBAN = in A1 eine Muster-Prozedur geschrieben, wo ich auf jeden Fall das Ergebnis wieder löschen kann:
Sub IBAN_Split()
   Dim IBAN As String, IBANneu As String
   Dim Block As Integer, WSp As String
   
   IBAN = Cells(1, 1)
   WSp = Chr(160)
   For Block = 0 To 4
      IBANneu = IBANneu & Mid(IBAN, Block * 4 + 1, 4) & WSp
   Next Block
   IBANneu = IBANneu & Right(IBAN, 2)
   ActiveCell = IBANneu
End Sub
Titel: Antw: Ibanfomat in Excel
Beitrag von: obeer am Oktober 12, 2015, 15:41:52 Nachmittag
Hallo,
erstmal vielen Dank für die Arbeit.
Aber egal ob ich es  normal oder als Klassenmodul einfüge, ich bekomme keine Leerzeichen.
Habe meinen Code nochmal umgechrieben:
****************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)

    ' in Spalte "O" erste Zeile auslassen da Überschrift
    If Not Target.Address > "$O$1" Then Exit Sub
   
    With Target
        .Value = _
            Trim(Format(Replace(.Value, " ", ""), "!&&&& &&&& &&&& &&&& &&&& &&&& &&&& &&&& &&"))
    End With
End Sub

******************************************************************************************
Da diese Prozedur aber immer nur eine Zelle anspricht und wenn mehrere eingefügt werden ein Fehler anzeigt, habe ich danach noch ein Macro eingefügt :

***************************************************************************
Sub Makro1()
'
' Makro1 Makro
'
' Tastenkombination: Strg+l
'
    Range("O2").Select
    Selection.Cut
    ActiveSheet.Paste
    Range("O3").Select
    Selection.Cut
    ActiveSheet.Paste
    Range("O4").Select
    Selection.Cut
    ActiveSheet.Paste
BIS
    Range("O100").Select
    Selection.Cut
    ActiveSheet.Paste
End Sub
*************************************************************************
mfG

obeer
Titel: Antw: Ibanfomat in Excel
Beitrag von: gmg-cc am Oktober 12, 2015, 16:30:36 Nachmittag
Also, ich bekomme mit meinem Code schon Leerstellen in die IBAN rein. Und ich kann die natürlich auch löschen, denn das war ja deine Ursprungsproblematik.
Ich mag mich allerdings nicht in deine sehr individuelle Art des Codes einarbeiten.

Wenn die IBANs immer in Spalte_O ab Zeile_2 stehen, wann wäre eine andere Form der Range-Deklaration gewiss für Außenstehende (und vielleicht auch Excel) leichter erkennbar. Eigentlich mag ist solche Folgerungen nicht (schreiben), aber: Du zeigst, dass du bei deiner Methodik bleiben möchtest, darum werde ich diesen Thread nicht mehr beobachten.