Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA-Code Änderung möglich?
#1
Hallo VBA-Experten,

habe zur Zeit folgendes Problem:
Mit dem unten aufgeführten VBA-Programm, welches sich in einem Modul befindet, bin ich in der Lage, automatisch ein neues Tabellenblatt zu erzeugen.
Dabei werden immer bestimmte Daten vom zuletzt erzeugten Tabellenblatt ins neue Tabellenbblatt übertragen.
Z.B werden vom zuletzt erzeugten Tabellenblatt Werte aus F45 in A45 des neuen Tabellenblatt übernommen.
Funktioniert fehlerfrei!
Ich würde gerne eine Änderung in dem Programm haben:
Beim Übertrag von G38 in G33 soll folgende zusätzliche Bedingung vorliegen:
Es sollen nur Minuswerte und Null übernommen werden. Wenn Wert größer als Null, dann soll der Wert immer Null sein.


Sub Kopie()
    Dim wks As Worksheet
On Error Resume Next
'ActiveSheet.Copy after:=Worksheets(Worksheets.Count)

   ActiveSheet.Copy after:=Worksheets(Worksheets.Count)
   Sheets(Sheets.Count).Name = "Kopie" & Sheets.Count - 2
   With Worksheets("Kopie" & Sheets.Count - 3)
    .Range("F45").Copy
     Range("A45").PasteSpecial Paste:=xlPasteValues
    .Range("E28").Copy
     Range("B28").PasteSpecial Paste:=xlPasteValues
     Range("C8").PasteSpecial Paste:=xlPasteValues
    .Range("G38").Copy
     Range("G33").PasteSpecial Paste:=xlPasteValues
    .Range("K29").Copy
     Range("A10").PasteSpecial Paste:=xlPasteValues
   
   
   ActiveSheet.Buttons.Add(868.5, 232.5, 76.5, 34.5).Select
    Selection.OnAction = "kopieren"
    Selection.Characters.Text = "nach Spielabschnitt kopieren"
    ActiveSheet.Shapes("Button 1").ScaleHeight 1.7156877175, msoFalse, _
        msoScaleFromTopLeft
    ActiveSheet.Shapes("Button 1").ScaleHeight 1.0114284583, msoFalse, _
        msoScaleFromTopLeft
        
    Range("M21").Select
    Range("L1").Select
    
   Application.CutCopyMode = False
   
End With
End Sub





Kann man da was machen?

Danke und Gruß Markus
Antworten Top
#2
Hallo maximus,

hinter deine markierten Zeilen:

If Range("G33").Value > 0 Then
   Range("G33").Value =0
End If
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Maximus
Antworten Top
#3
Moin!
Ich hole mal gerade meine Glaskugel heraus, Markus.
Handelt es sich um Monatsblätter und Dein Makro sorgt für einen korrekten Übertrag des Endbestandes?

Dann solltest Du in Erwägung ziehen, Dein Konzept zu überdenken.
Alles in ein Blatt und die Monatsauswertung(en) erstellst Du mit dem AutoFilter iVm Teilergebnis() und/oder mit einem Pivot-Table.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hi Helmut,
super danke funktioniert!!!!

Viele Grüße
Antworten Top
#5
Moin Ralf,
ist nur ein Vordruck für Fußballwetten/Casino.
Aber ich werde die beiden Begriffe von dir mal googlen und mir darüber ein Kopf machen.
Danke!!
Antworten Top


Gehe zu:


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