Collapse column

Autor Thema: Ibanfomat in Excel  (Gelesen 1231 mal)

Offline obeer

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Ibanfomat in Excel
« 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

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Ibanfomat in Excel
« Antwort #1 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
Gruß
Günther

Offline obeer

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Mittelmäßig
  • Version [Office] : Office 2010
Antw: Ibanfomat in Excel
« Antwort #2 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

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: Ibanfomat in Excel
« Antwort #3 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.
Gruß
Günther

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.