Freigeben über

Fehler bei .Replace What:=" "

Anonym
2010-11-15T14:37:47+00:00

Salü alle zusammen

Ich habe in Access 2010 ein Stück vba Code den ich unten abgebildet habe. Wenn es nichts zu ersetzen gibt bei .Selection.Replace What:= " ", Replacement:="", LookAt:=2 dann reklamiert Excel, dass es nichts zu ersetzen hätte. Das ist ja richtig, aber muss Excel diesen Dialog ausgeben, kann man den nicht unterbinden? Wie sag ich Excel: "Halt die Klappe und arbeite!"?

Habe mir On Error resume next versucht, aber die Aussage, das nix zu ersetzen ist, ist ja kein Fehler und kommt dennoch.

Wie kann ich die Fehlermeldung abschalten?

Vielen lieben Dank für Hilfestellung

Gruss Sabrina

Dim objExcel As Object

Dim vRep As String ' Migration 2010 Für Replace nötig

Set objExcel = CreateObject("Excel.Application")

        With objExcel

            .workbooks.Open FileName:=datei

            .WindowState = -4140

            .Visible = True

            letzte_spalte = .cells(1, .Columns.Count).End(-4159).offset(0, 1).Column

            .cells(1, letzte_spalte).Value = "STORNOPOLICENNUMMER"

            gv_datum_spalte = .rows(1).Find(What:="DATUM_GV_ERÖFFNET", LookAt:=1).Column

            policennummer_spalte = .rows(1).Find(What:="POLICENNUMMER", LookAt:=1).Column

            For I = 2 To .cells(.rows.Count, policennummer_spalte).End(-4162).Row

            .cells(I, letzte_spalte).Value = "x" & .cells(I, policennummer_spalte).Value & .cells(I, gv_datum_spalte).Value & "x"

            Next I

            .range(.cells(1, letzte_spalte), .cells(.cells(.rows.Count, policennummer_spalte).End(-4162).Row, letzte_spalte)).Select

>>        .selection.Replace What:=" ", Replacement:="", LookAt:=2 ' Wenn nichts zu ersetzen ist, kommt hier die Fehlermeldung

            .selection.Replace What:=".", Replacement:="", LookAt:=2

            .selection.Replace What:=":", Replacement:="", LookAt:=2

            .activeworkbook.Close True

            .Quit

        End With

  Set objExcel = Nothing

Microsoft 365 und Office | Excel | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare

Antwort, die vom Frageautor angenommen wurde

Anonym
2010-11-15T16:55:33+00:00

Am 15.11.2010 15:37, schrieb Sabrina Sanders:

Ich habe in Access 2010 ein Stück vba Code den ich unten abgebildet habe. Wenn es nichts zu ersetzen gibt bei .Selection.Replace What:= " ", Replacement:="", LookAt:=2 dann reklamiert Excel, dass es nichts zu ersetzen hätte. Das ist ja richtig, aber muss Excel diesen Dialog ausgeben, kann man den nicht unterbinden? Wie sag ich Excel: "Halt die Klappe und arbeite!"?

Nun ja, das Replace eigentlich arbeitet von sich aus "lautlos", daran kann es nicht liegen. Das .Cells vom Application object bezieht sich zwar laut Hilfe dann auf ActiveSheet, aber wie das mit Select zusammen funktioniert... rein technisch gesehen ist es zwar okay, aber praktisch doch unüblich. Und ohne Select ist es eh besser, probier es mal so.

Andreas.

Enum XlDirection

  xlDown = -4121

  xlToLeft = -4159

  xlToRight = -4161

  xlUp = -4162

End Enum

Enum XlLookAt

  xlWhole = 1

  xlPart = 2

End Enum

Enum XlWindowState

  xlMaximized = -4137

  xlMinimized = -4140

  xlNormal = -4143

End Enum

Sub Test()

  Dim objExcel As Object 'Excel.Application

  Set objExcel = CreateObject("Excel.Application")

  With objExcel

    .Workbooks.Open Filename:=datei

    .WindowState = xlMinimized

    .Visible = True

    With .ActiveSheet

      letzte_spalte = .Cells(1, .Columns.Count).End(xlToLeft) _

          .Offset(0, 1).Column

      .Cells(1, letzte_spalte).Value = "STORNOPOLICENNUMMER"

      gv_datum_spalte = .Rows(1).Find(What:= _

          "DATUM_GV_ERÖFFNET", LookAt:=1).Column

      policennummer_spalte = .Rows(1).Find(What:= _

          "POLICENNUMMER", LookAt:=1).Column

      For I = 2 To .Cells(.Rows.Count, policennummer_spalte) _

          .End(xlUp).Row

        .Cells(I, letzte_spalte).Value = "x" & .Cells(I, _

            policennummer_spalte).Value & .Cells(I, gv_datum_spalte) _

            .Value & "x"

      Next I

      With .Range( _

          .Cells(1, letzte_spalte), _

          .Cells(.Cells(.Rows.Count, policennummer_spalte).End( _

          xlUp).Row, letzte_spalte))

        .Replace What:=" ", Replacement:="", LookAt:=xlPart

        .Replace What:=".", Replacement:="", LookAt:=xlPart

        .Replace What:=":", Replacement:="", LookAt:=xlPart

      End With

    End With

    .ActiveWorkbook.Close True

    .Quit

  End With

End Sub

War diese Antwort hilfreich?

0 Kommentare Keine Kommentare

0 zusätzliche Antworten

Sortieren nach: Am hilfreichsten