Office: (Office 2016) über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen

Helfe beim Thema über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bin neu hier und auch mit Excel nicht so gut vertraut. Habe mir aus einem Youtube Video eine Anleitung herausgesucht, die soweit... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von JoNo1970, 25. September 2020.

  1. JoNo1970 Neuer User

    über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen


    Hallo zusammen,
    ich bin neu hier und auch mit Excel nicht so gut vertraut. Habe mir aus einem Youtube Video eine Anleitung herausgesucht, die soweit auch ganz gut funktioniert.

    Es geht darum die Daten einer Rechnung, die ich mit verschiedenen Aufklappfeldern und Formeln befüllen kann per Button in ein anderes Arbeitsblatt zu übertragen. Dies funktioniert gut, bis auf die Zwischensumme, den Betrag der MwSt und dem Gesamtbetrag.

    Beispiel: der Gesamtbetrag beläuft sich auf 264,14 Euro, es erscheint in der Zieltabelle: 26.414.476,00 €.

    Hier ist der Code, den ich verwendet habe, vielleicht hat ja jemand eine Idee um das zu lösen.

    Sub Schaltfläche4_Klicken()

    Dim Rechnungsnummer As String, Rechnungsdatum As String, Anrede As String, VornameNachname As String, StraßeHausnummer As String, PLZWohnort As String, Verwendungszweck As String, Leistung1 As String, Betrag1 As String, Faktor1 As String, Leistung2 As String, Betrag2 As String, Faktor2 As String, Leistung3 As String, Betrag3 As String, Faktor3 As String, Leistung4 As String, Betrag4 As String, Faktor4 As String, Leistung5 As String, Betrag5 As String, Faktor5 As String, Leistung6 As String, Betrag6 As String, Faktor6 As String, Leistung7 As String, Betrag7 As String, Faktor7 As String, Leistung8 As String, Betrag8 As String, Faktor8 As String, Leistung9 As String, Betrag9 As String, Faktor9 As String, Leistung10 As String, Betrag10 As String, Faktor10 As String, Leistung11 As String, Betrag11 As String, Faktor11 As String, Leistung12 As String, Betrag12 As String, Faktor12 As String, Leistung13 As String, Betrag13 As String, Faktor13 As String, Leistung14 As String, Betrag14 As String, Faktor14 As String
    Dim Leistung15 As String, Betrag15 As String, Faktor15 As String, Leistung16 As String, Betrag16 As String, Faktor16 As String, Zwischensumme As String, MwSt As String, Gesamtbetrag As String

    Worksheets("Rechnung Privat").Select
    Rechnungsnummer = Range("E22")
    Rechnungsdatum = Range("H19")
    Anrede = Range("A8")
    VornameNachname = Range("A9")
    StraßeHausnummer = Range("A10")
    PLZWohnort = Range("A11")
    Verwendungszweck = Range("E23")
    Leistung1 = Range("B30")
    Betrag1 = Range("G30")
    Faktor1 = Range("H30")
    Leistung2 = Range("B31")
    Betrag2 = Range("G31")
    Faktor2 = Range("H31")
    Leistung3 = Range("B32")
    Betrag3 = Range("G32")
    Faktor3 = Range("H32")
    Leistung4 = Range("B33")
    Betrag4 = Range("G33")
    Faktor4 = Range("H33")
    Leistung5 = Range("B34")
    Betrag5 = Range("G34")
    Faktor5 = Range("H34")
    Leistung6 = Range("B35")
    Betrag6 = Range("G35")
    Faktor6 = Range("H35")
    Leistung7 = Range("B36")
    Betrag7 = Range("G36")
    Faktor7 = Range("H36")
    Leistung8 = Range("B37")
    Betrag8 = Range("G37")
    Faktor8 = Range("H37")
    Leistung9 = Range("B38")
    Betrag9 = Range("G38")
    Faktor9 = Range("H38")
    Leistung10 = Range("B39")
    Betrag10 = Range("G39")
    Faktor10 = Range("H39")
    Leistung11 = Range("B40")
    Betrag11 = Range("G40")
    Faktor11 = Range("H40")
    Leistung12 = Range("B41")
    Betrag12 = Range("G41")
    Faktor12 = Range("H41")
    Leistung13 = Range("B42")
    Betrag13 = Range("G42")
    Faktor13 = Range("H42")
    Leistung14 = Range("B43")
    Betrag14 = Range("G43")
    Faktor14 = Range("H43")
    Leistung15 = Range("B44")
    Betrag15 = Range("G44")
    Faktor15 = Range("H44")
    Leistung16 = Range("B45")
    Betrag16 = Range("G45")
    Faktor16 = Range("H45")
    Zwischensumme = Range("I46")
    MwSt = Range("I47")
    Gesamtbetrag = Range("I48")

    Worksheets("Rechnungsausgang").Select
    Worksheets("Rechnungsausgang").Range("A4").Select
    If Worksheets("Rechnungsausgang").Range("A4").Offset(1, 0) <> "" Then
    Worksheets("Rechnungsausgang").Range("A4").End(xlDown).Select
    End If

    ActiveCell.Offset(1, 0).Select
    ActiveCell.Value = Rechnungsnummer
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Rechnungsdatum
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Anrede
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = VornameNachname
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = StraßeHausnummer
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = PLZWohnort
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Verwendungszweck
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung1
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag1
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor1
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung2
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag2
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor2
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung3
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag3
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor3
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung4
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag4
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor4
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung5
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag5
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor5
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung6
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag6
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor6
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung7
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag7
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor7
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung8
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag8
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor8
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung9
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag9
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor9
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung10
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag10
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor10
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung11
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag11
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor11
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung12
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag12
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor12
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung13
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag13
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor13
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung14
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag14
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor14
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung15
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag15
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor15
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Leistung16
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Betrag16
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Faktor16
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value2 = Zwischensumme
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value2 = MwSt
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value2 = Gesamtbetrag


    End Sub

    Vielen Dank schonmal im Voraus
     
  2. Exl121150 Erfahrener User
    Hallo,

    das liegt an einer (geringfügig) falschen Formatierung der Zahl. Das passiert (häufig) dann, wenn man aus irgendwelchen anderssprachlichen Internertseiten etwas kopiert.
    Dem ist leicht abzuhelfen mit folgender zusätzlichen Codezeile vor dem "End Sub" (rot gekennzeichnet):

    Code:
    '...
    '...
    ActiveCell.Value2 = Gesamtbetrag
    [COLOR="#FF0000"]ActiveCell.NumberFormat = "#,##0.00"[/COLOR]
    
    End Sub
    
    Anmerkung: Wenn du nämlich in der roten Zeile das Komma-Zeichen durch einen Punkt ersetzst (sodass dann 2 Punkte in der Format-Maske enthalten sind), dann entsteht dieser Effekt.
     
    Exl121150, 25. September 2020
    #2
  3. JoNo1970 Neuer User
    Hallo Anton,
    vielen Dank für die schnelle Antwort.
    Ich habe die Zeile eingefügt, allerdings ohne Erfolg. Kann es daran liegen, dass die jeweiligen Beträge, von Zwischensumme, MwSt und Gesamtbetrag aus Formeln (Summe) gebildet werden? Wollte eigentlich einen Screenshot einfügen, aber funktioniert nicht über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen :(

    Die Zwischensumme =SUMME(I30:I45)
    MwSt =I46*0,16
    Gesamtbetrag =SUMME(I46:I47)
    Alle sind auf Format Währung, mit 2 Dezimalstellen und € Zeichen am Ende eingestellt.
    Gesamtbetrag wird folgendermaßen angezeigt: 264,14 €
    In der Zieltabelle erscheint: 26.414.476,00 € diese ist ebenfalls als Währung mit 2 Dezimalstellen und € Zeichen am Ende eingestellt. In der Eingabezeile erscheint nur die reine lange Zahl, ohne Dezimalstellen: 26414476

    ActiveCell.NumberFormat = "#,##0.00" habe ich, wie Du es geschrieben hast eingefügt. Aber die Zieldatei gibt es unverändert aus.

    Hast Du noch eine Idee?

    LG Jochen
     
  4. JoNo1970 Neuer User

    über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen

    Ich bin es nochmal. Habe eine Möglichkeit gefunden und sie funktioniert.
    Habe es in den Excel-Optionen gefunden. Und zwar unter -Erweitert- ganz unten beim Punkt -Beim Berechnen dieser Arbeitsmappe- das Häkchen bei -Genauigkeit wie angezeigt- setzen.
    Jetzt rechnet er nur mit 2 Kommastellen weiter und das Ergebnis wird korrekt übernommen.
    Manchmal sucht man sich einfach nach Lösungen kaputt, obwohl es einfache Lösungen gibt.
    Trotzdem nochmal vielen Dank an Dich Anton
     
  5. Exl121150 Erfahrener User
    Hallo,

    es tut mir leid, ich hatte zu wenig überprüft, welche Datentypen du in VBA verwendest: Du verwendest generell den Datentyp String egal, um welche Daten es sich handelt.
    Das sollte man jedoch nicht tun. Im folgenden VBA-Code habe ich dein Makro umgeschrieben und hoffe, dass es keinen Fehler enthält, denn überprüfen konnte ich es nicht, da ich deine Excel-Arbeitsblätter nicht kenne.

    Ich habe außer dem Datentyp String folgende Typen verwendet:
    Typ Currency für Währungs-Variablen
    Typ Date für Datums-Variablen
    Typ Double für die Faktor-Variablen (da ich nicht wusste, was der genaue Zweck dieser ist).
    Typ Long für Ganzzahl-Variable I
    Typ Range für eine Bereichs-Variable rgSatzFeld (um Arbeitsblattzellen zu adressieren).

    Ferner benutzerdefinierte Variablen-Typen (RechnungsKopf, RechnungsAdresse, RechnungsZeile, RechnungsFuß).

    Code:
    Option Explicit
    
    Private Type RechnungsAdresse
      Anrede As String
      VornameNachname As String
      StraßeHausnummer As String
      PLZWohnort As String
    End Type
    Private Type RechnungsKopf
      Nummer As String
      Datum As Date
      Verwendungszweck As String
    End Type
    Private Type RechnungsZeile
      Leistung As String
      Betrag As Currency
      Faktor As Double
    End Type
    Private Type RechnungsFuß
      Zwischensumme As Currency
      MwSt As Currency
      Gesamtbetrag As Currency
    End Type
    
    Private rgSatzFeld As Range
    
    Sub Schaltfläche4_Klicken()
    
      Dim RechgAdresse As RechnungsAdresse
      Dim RechgKopf As RechnungsKopf
      Dim RechgPosition(1 To 16) As RechnungsZeile
      Dim RechgFuß As RechnungsFuß
      
      Dim I As Long
      
      Worksheets("Rechnung Privat").Select
      
      With RechgKopf                       'Datentyp RechnungsKopf
        .Nummer = Range("E22")             'Datentyp String
        .Datum = Range("H19")              'Datentyp Date
        .Verwendungszweck = Range("E23")   'Datentyp String
      End With
      
      With RechgAdresse                    'Datentyp RechnungsAdresse
        .Anrede = Range("A8")              'Datentyp String
        .VornameNachname = Range("A9")     'Datentyp String
        .StraßeHausnummer = Range("A10")   'Datentyp String
        .PLZWohnort = Range("A11")         'Datentyp String
      End With
      
      For I = 1 To 16
        With RechgPosition(I)              'Datentyp RechnungsZeile
          .Leistung = Cells(I + 29, "B")   'Datentyp String
          .Betrag = Cells(I + 29, "G")     'Datentyp Currency
          .Faktor = Cells(I + 29, "H")     'Datentyp Double
        End With
      Next I
      
      With RechgFuß                        'Datentyp RechnungsFuß
        .Zwischensumme = Range("I46")      'Datentyp Currency
        .MwSt = Range("I47")               'Datentyp Currency
        .Gesamtbetrag = Range("I48")       'Datentyp Currency
      End With
      
      Set rgSatzFeld = Worksheets("Rechnungsausgang").Range("A4")
      If rgSatzFeld.Offset(1, 0) <> "" Then Set rgSatzFeld = rgSatzFeld.End(xlDown)
      Set rgSatzFeld = rgSatzFeld.Offset(1, 0)
      
      With RechgKopf                       'Datentyp RechnungsKopf
        SatzFeld .Nummer                   'Datentyp String
        SatzFeld .Datum                    'Datentyp Date
      End With
      
      With RechgAdresse                    'Datentyp RechnungsAdresse
        SatzFeld .Anrede                   'Datentyp String
        SatzFeld .VornameNachname          'Datentyp String
        SatzFeld .StraßeHausnummer         'Datentyp String
        SatzFeld .PLZWohnort               'Datentyp String
      End With
        
      SatzFeld RechgKopf.Verwendungszweck  'Datentyp String
        
      For I = 1 To 16
         With RechgPosition(I)             'Datentyp RechnungsZeile
            SatzFeld .Leistung             'Datentyp String
            SatzFeld .Betrag               'Datentyp Currency
            SatzFeld .Faktor               'Datentyp Double
         End With
      Next I
        
      With RechgFuß                        'Datentyp RechnungsFuß
        SatzFeld .Zwischensumme            'Datentyp Currency
        SatzFeld .MwSt                     'Datentyp Currency
        SatzFeld .Gesamtbetrag             'Datentyp Currency
      End With
    
    End Sub
    
    Sub SatzFeld(Wert As Variant)
      rgSatzFeld.Value = Wert
      Set rgSatzFeld = rgSatzFeld.Offset(0, 1)
    End Sub
    
     
    Zuletzt bearbeitet: 27. September 2020
    Exl121150, 27. September 2020
    #5
Thema:

über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen

Die Seite wird geladen...
  1. über vba nur den Wert einer Zelle, ohne Formel und Formatierung übernehmen - Similar Threads - vba Wert Zelle

  2. Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.)

    in Microsoft Excel Hilfe
    Excel VBA - Code Hilfe (Spalten, Werte kopieren etc.): Hallo, ich benötige Hilfe für ein Problem, welches ich leider selbst schwerlich als Anfänger nicht lösen kann: Ich möchte von dem Tabellenblatt "Tabelle1" aus den Zellen B8:B14, K8:K14, B18:B25,...
  3. Sperren von Zellen basierend auf Werten in einer anderen Zelle

    in Microsoft Excel Hilfe
    Sperren von Zellen basierend auf Werten in einer anderen Zelle: Hallo zusammen, ich brauche ein wenig "VBA-Hilfe" von den Fachleuten. Folgenden Code habe ich mit meinem Halbwissen zusammen gebastelt. Private Sub Worksheet_Change(ByVal Target As Range) If...
  4. Excel mit VBA ganze Zeile nach einem Wert in Zelle löschen

    in Microsoft Excel Hilfe
    Excel mit VBA ganze Zeile nach einem Wert in Zelle löschen: Hallo zusammen Mein Kopf ist kurz vorm Explodieren. Hoffe auf eure Hilfe: Ich versuche mit einem Makro anhand des Wertes der in Zelle G1 steht, alle Zeilen mit diesem Wert in der Tabelle zu...
  5. VBA Zelle mit bestimmten Werten kopieren

    in Microsoft Excel Hilfe
    VBA Zelle mit bestimmten Werten kopieren: Hallo zusammen, ich habe folgendes Problem und keine wirkliche Lösung dafür. Ich möchte mittels VBA in einem Dokument alle Zeilen kopieren, welche in einer bestimmten Spalte (bspw. Spalte 11)...
  6. Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln

    in Microsoft Excel Hilfe
    Werte der letzten Zelle einer Spalte in mehreren Tabellenblättern ermitteln: Hallihalllo, Ich sitze gerade an meine Bachelorarbeit und muss mittels VBA ein Auswertungsprogramm für erhobene Daten erarbeiten. Ich suche schon ewig im Internet nach dem passenden Code und...
  7. Excel-VBA Werte addieren und in nächste freie Zelle eintragen

    in Microsoft Excel Hilfe
    Excel-VBA Werte addieren und in nächste freie Zelle eintragen: Hallo zusammen, ich hab ein kleines Problem und komme leider nicht wurklich voran. Ich habe eine Datei zu einem Produkt. Dort sind für eine bestimmtes Bestelldatum und Ausführungstag die Werte...
  8. VBA: Wenn Zelle X einen bestimmten Wert hat, soll in Zelle Y etwas eingetragen werden

    in Microsoft Excel Hilfe
    VBA: Wenn Zelle X einen bestimmten Wert hat, soll in Zelle Y etwas eingetragen werden: Servus zusammen, Zunächst mal: Freut mich unter Euren Reihen zu sein ;-) Nun zum Problem. Ich möchte über ein Makro eine Funktion bauen, die wie folgt aufgebaut ist: Spalte A hat nur ein...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden