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.

Excel vba Richtiges umkopieren
#21
Hallo Erich,

so müsste es gehen:


Code:
Sub übertragen()
Dim i As Long
Dim lngS As Long
Dim lngZ As Long
Dim lngA As Long
Dim feld

lngS = Application.Max(9, Cells(7, Columns.Count).End(xlToLeft).Column)
lngZ = Application.Max(7, Cells(Rows.Count, "C").End(xlUp).Row)
lngA = Application.CountIf(Range(Cells(7, "F"), Cells(lngZ, "F")), "x")
feld = Range(Cells(7, "C"), Cells(lngZ, "F"))

If lngS = 16 Then
 MsgBox "Übertragfelder voll!"
 Exit Sub
End If

If lngA > 0 Then
For i = 1 To lngZ - 6
 If feld(i, 4) <> "x" Then
   feld(i, 1) = 0
 End If
Next i
Range(Cells(7, lngS + 1), Cells(lngZ, lngS + 1)) = feld
End If

End Sub
EDIT: CODE WAR DOPPELT EINGEFÜGT

Wenn die Zielzellen bis Spalte P gefüllt sind, erscheint eine Meldung und es wird nicht übertragen.
Wenn Du das nicht haben möchtest, dann folgende Zeilen im Code löschen:

Code:
If lngS = 16 Then
 MsgBox "Übertragfelder voll!"
 Exit Sub
End If
oder Du ersetzt die Zeilen mit folgenden:

Code:
If lngS = 16 Then
 If MsgBox("Übertragfelder voll!" & vbLf & vbLf & "Soll der Bereich geleert werden, um wieder am Anfang einzufügen?", _
           vbYesNo, "FRAGE") = vbYes Then
   Range(Cells(7, 10), Cells(lngZ, lngS)).ClearContents
   lngS = 9
 Else
   Exit Sub
 End If
End If

Dann wird der Zielbereich geleert und es wird wieder am Anfang eingefügt.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
Antworten Top
#22
Vielen Dank Attila, einfach cool!!!!!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#23
Hallo Attila,

ich hätte da noch eine Frage.

Wenn ich im Tabellenblatt weitere Daten eintrage dann arbeitet das Makro auch diese Zellen ab. Das möchte ich natürlich nicht. Siehe angefügte Datei.
Beispielhaft habe ich mal einfach die Einträge runterkopiert.
Der Statistikbereich reicht von J7 - P21. Diesem Bereich habe ich den Namen "Einzel_Statistik" vergeben.

Könntest Du mir bitte zeigen wie Einträge nur in diesem Bereich eingetragen werden können? Der Rest der Tabelle soll unbeeinflusst bleiben.


Angehängte Dateien
.xlsm   Mappe1Sharky51_V2.xlsm (Größe: 49,94 KB / Downloads: 1)
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#24
Hallo Erich,


dann kann der Bereich ja fest angegeben werden. Ich hb das jetzt mal mit Zellbezügen fest gemacht.


Code:
Sub übertragenNeu()
Dim i As Long
Dim lngS As Long
Dim lngA As Long
Dim feld

lngS = Application.Max(9, Cells(7, Columns.Count).End(xlToLeft).Column)
lngA = Application.CountIf(Range("C7:F21"), "x")
feld = Range("C7:F21")

If lngS = 16 Then
MsgBox "Übertragfelder voll!"
Exit Sub
End If

If lngA > 0 Then
For i = 1 To 21 - 6
 If feld(i, 1) <> "" Then
  If feld(i, 4) <> "x" Then
    feld(i, 1) = 0
  End If
 End If
Next i
Range(Cells(7, lngS + 1), Cells(21, lngS + 1)) = feld
End If

End Sub


Du nutzt eine Schaltfläche aus den ActiveX Steuerelementen. Geh dort auf Eigenschaften und änder bei TakeFocusOnClick von True auf False.
Dann wird der Schalter nicht markiert nach Betätigung.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • sharky51
Antworten Top
#25
Attila,

einfach cool...vielen Dank!

Wie das mit dem Namensbereich geht würde mich aber trotzdem interessieren?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top


Gehe zu:


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