Bestimmte Werte durch andere Werte ersetzen?
#21
Hallo Thomas,

In diesem Fall vielleicht MWSt als Variant deklarieren:

Code:
Sub SteuerkennzeichenZuMWSt()

'Ersetzt Steuerkennzeichen durch entsprechenden Mehrwertsteuersatz.
'Version Wann       Wer        Was
'1       02.11.2020 CEF        Erste Version
'2       03.11.2020 Thomas     ...

Dim i As Long, Spalte As Long, Suche As Range
Dim MWSt As Variant

With Worksheets("TEST")
   
    Set Suche = .Range("1:1").Find(What:="Steuerkennzeichen", LookAt:=xlWhole)
    If Suche Is Nothing Then
        Call MsgBox("Spaltentitel Steuerkennzeichen nicht gefunden!" & vbCrLf & _
                "Bitte Daten für Umsatz-Nachweis einfügen und" & vbCrLf & _
                "erneut versuchen!", vbOKOnly, "Fehler")
        Exit Sub
    End If
    Spalte = Suche.Column
  
    For i = 2 To .Cells(Rows.Count, Spalte).End(xlUp).Row
        Select Case .Cells(i, Spalte).Value
            Case 76: MWSt = 0.19
            Case 78: MWSt = 0.16
            Case 55: MWSt = 0.07
            Case 53: MWSt = 0.05
            Case 12, 14, 94 To 97, "E2", "E8": MWSt = 0#
            Case Else: MWSt = ""
        End Select
        .Cells(i, Spalte) = MWSt
    Next i
    Suche.EntireColumn.Style = "Percent"
    Suche.Replace What:="Steuerkennzeichen", Replacement:="Mehrwertsteuer", LookAt:=xlWhole
   
End With
              
End Sub
Ich würde im ernsthaften Betrieb auch immer Versionen führen, damit jeder weiß, ob er die neueste Version einsetzt.
Top
#22
Okay, das habe ich verstanden und das funktioniert noch deutlich besser als zuvor. Wir haben uns hier so reingesteigert, dass es auf alle fälle jetzt deutlich sicherer funktioniert.

1 Problem besteht: 

Code:
With Worksheets("TEST")


Ich möchte, dass das Makro auf alle geöffneten Dateien ausgeführt wird, kann ich das machen?
Top
#23
Ich hoffe, Du hast alle zu ändernden Daten in derselben Excel Instanz:

Code:
Sub SteuerkennzeichenZuMWSt()

'Ersetzt Steuerkennzeichen durch entsprechenden Mehrwertsteuersatz.
'Version Wann       Wer        Was
'1       02.11.2020 CEF        Erste Version
'2       04.11.2020 Sulprobil  Für alle offenen Workbooks dieser Excel Instanz alle Sheets durchgehen.

Dim i As Long, Spalte As Long, Suche As Range
Dim MWSt As Variant
Dim wb As Workbook
Dim ws As Worksheet

For Each wb In Application.Workbooks
    For Each ws In wb.Sheets
       
        Set Suche = ws.Range("1:1").Find(What:="Steuerkennzeichen", LookAt:=xlWhole)
        If Suche Is Nothing Then
            Call MsgBox("Spaltentitel Steuerkennzeichen nicht gefunden!" & vbCrLf & _
                    "Bitte Daten für Umsatz-Nachweis einfügen und" & vbCrLf & _
                    "erneut versuchen!", vbOKOnly, "Fehler")
            Exit Sub
        End If
        Spalte = Suche.Column
      
        For i = 2 To ws.Cells(Rows.Count, Spalte).End(xlUp).Row
            Select Case ws.Cells(i, Spalte).Value
                Case 76: MWSt = 0.19
                Case 78: MWSt = 0.16
                Case 55: MWSt = 0.07
                Case 53: MWSt = 0.05
                Case 12, 14, 94 To 97, "E2", "E8": MWSt = 0#
                Case Else: MWSt = ""
            End Select
            ws.Cells(i, Spalte) = MWSt
        Next i
        Suche.EntireColumn.Style = "Percent"
        Suche.Replace What:="Steuerkennzeichen", Replacement:="Mehrwertsteuer", LookAt:=xlWhole
       
    Next ws
Next wb
              
End Sub
Top
#24
Thumbs Up 
Klasse, vielen Dank, das funktioniert einwandfrei. Sehr gut, ich nutze das Makro jeden Tag!
Top
#25
Hallo, 

ich habe noch die Range verändert, also 1:10, dann wandelt er den namen "steuerkennzeichen" nicht in "Mehrwertsteuersatz", um, was mache ich falsch?
Top
#26
Hallöchen,

- warum 1:10? Weißt Du nicht, in welcher Zeile Deine Überschrift steht?
- steuerkennzeichen und Steuerkennzeichen ist nicht dasselbe
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#27
Das war eine Rückkfrage, aber kann ich als erledigt betrachten, das funktioniert gut.

Wenn ich z. B. 11,5 Prozent habe, wandelt er das in 12 % um,
Top
#28
Funktioniert das auch so:

Suche.EntireColumn.NumberFormat = "0.00%"
Top
#29
Hallo,

mein VBA Code geht wunderbar. 

Könnt ihr mir helfen, damit es auf alle Tabellenblätter funktioniert und nicht nur im Tabellenblatt "Umsatz-nachweiss"

Code:
Sub TEST ()


Dim i As Long, Spalte As Long, Suche As Range
Dim MWSt As Variant

With Worksheets("UMSATZ-NACHWEIS")
   
    Set Suche = .Range("1:1").Find(What:="Steuerkennzeichen", LookAt:=xlWhole)
    If Suche Is Nothing Then
        Call MsgBox("Keine Daten für Umsatz-Nachweis gefunden!" & vbCrLf & _
                "Bitte Daten für Umsatz-Nachweis einfügen und" & vbCrLf & _
                "erneut versuchen!", vbOKOnly, "Fehler")
        Exit Sub
    End If
    Spalte = Suche.Column
 
    For i = 2 To .Cells(Rows.Count, Spalte).End(xlUp).Row
        Select Case .Cells(i, Spalte).Value
            Case 76: MWSt = 0.19
            Case 78: MWSt = 0.16
            Case 55: MWSt = 0.07
            Case 53: MWSt = 0.05
            Case 74: MWSt = 0.107
            Case 24: MWSt = 0#
            Case 30: MWSt = 0#
            Case 99: MWSt = 0#
            Case 12, 14, 94 To 97, "E2", "E8": MWSt = 0#
            Case Else: MWSt = ""
           
        End Select
        .Cells(i, Spalte) = MWSt
    Next i
    Suche.EntireColumn.NumberFormat = "0.00%"
    Suche.Replace What:="Steuerkennzeichen", Replacement:="Mehrwertsteuer", LookAt:=xlWhole
   
End With
             
End Sub


Danke.
Top
#30
Hallöchen,

da wäre die Frage, wo.
Wenn Du das jeweils aktive Blatt nehmen willst dann ersetze
Worksheets("UMSATZ-NACHWEIS")
durch
ActiveSheet
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste