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.

Makro hängt sich auf
#1
Hallo Zusammen,

Ich habe eine Code geschrieben der gewisse Zellen innerhalb einer Arbeitsmappe verschiebt. Führt man diesen Manuell aus, klappt es. Sobald man aber das Makro automatisch bei einer Zelleneingabe starten will, dann blockiert Excel. Weiss jemand woran das liegt?

Ich bin ziemlicher VBA Anfänger, ich denke der Code ist auch recht umständlich geschrieben worden.

Hier noch der VBA-Code sowie das auslösen des Codes:

Code:
Sub Makro1()
 
   Range("F2:G6").Select
   Selection.Copy
   Sheets("données").Select
     
nb = ThisWorkbook.Sheets("données").Cells(4, Columns.Count).End(xlToLeft).Column
nb = nb + 1
               
ActiveSheet.Cells(3, nb).Select
ActiveSheet.Paste
   
nb = nb + 2
ActiveSheet.Cells(4, nb).Select
 
   Sheets("Tabelle2").Select
   Range("D2:I6").Select
   Selection.Copy
   Range("B2").Select
   ActiveSheet.Paste
   
     
End Sub

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F5")) Is Nothing Then

Call Makro1

End If
End Sub

Danke für eure Hilfe.
Antworten Top
#2
Hallo,

ohne den code genauer angesehen zu haben, versuch es mal so (ungetestet):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F5")) Is Nothing Then
Application.enableevents = false
Call Makro1
Application.enableevents = true
End If
End Sub
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • Simlibimli
Antworten Top
#3
Hallo

ich habe mir das Makro1 einmal angesehen und seine Schreibweise verkürzt, soweit ich es verstanden habe. 
Für Anfaenger die mit Makro Recorder aufzeichnen ist Select nırmal, wir verzichten als Programmierer darauf!

Bei dem 1. Cody Befehl besser die Tabelle aus der kopiert werden soll mit angeben!!  Range("F2:G6").Copy   'besser Tabelle mit angeben !!
Der naechste Befehl führt ins leere, da passiert nix mehr.  Wofür ist der gut??  Wenn überflüssig besser löschen.  ActiveSheet.Cells(4, nb).Select
Steht in meinem Beispiel vor einem Befehl ein  Zeichen wurde er deaktivert. Durch entfernen von ' wird er aktiv.

mfg Gast123 

Code:
Sub Makro1()
'Column besser am Anfang suchen
nb = ThisWorkbook.Sheets("données").Cells(4, Columns.Count).End(xlToLeft).Column
nb = nb + 1
               
  'Copy und Paste -ohne Select- über PasteSpecial
  Range("F2:G6").Copy   'besser Tabelle mit angeben !!
 'Sheets("Tabelle xx").Range("F2:G6").Copy
  Sheets("données").Cells(3, nb).PasteSpecial xlPasteAll
 
nb = nb + 2
ActiveSheet.Cells(4, nb).Select
'wofür ist dieser Select gut, da kommt kein ActiveSheet.Paste !!
 
  Sheets("Tabelle2").Select
  Range("D2:I6").Select
  Selection.Copy
 
  'kürzere Schreibweise ohne Select!!
  Sheets("Tabelle2").Range("D2:I6").Copy
  Range("B2").PasteSpecial xlPasteAll      'kopieren ins gleiche Blatt ??
  'Sheets("Tabelle2").Range("B2").PasteSpecial xlPasteAll     'oder besser so
  Application.CutCopyMode = False
   
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Simlibimli
Antworten Top
#4
Danke für eure Hilfe,

Ich habe das Makro etwas vereinfacht, ohne Select alles auf einer Tabelle.

Das Problem mit dem ausführen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F5")) Is Nothing Then
Application.enableevents = false
Call Makro1
Application.enableevents = true
End If
End Sub

 Der Vorgeschlagene Code funktioniert zwar, aber ich habe noch einen weiteren Code der sich nach einer Eingabe ausführen soll, dieser funktioniert jedoch nicht mehr wenn der erste Code ebenfalls angewandt wird.
Das wäre der zweite Code um ein anderes Makro aus zu führen:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row = 11 Then
Call TimeC1
End If
End Sub


Ist es möglich diese beide in Kombination ausführen zu lassen?
Antworten Top
#5
oder ?
Code:
Sub M_akro_001()
   with Sheets("données").currentregion
      activesheet.Range("F2:G6").Copy  .offset(2,.columns.count).resize(1,1)
    end with
    sheets("Tabelle2").Range("D2:I6").Copy  activesheet.Range("F2")
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Simlibimli
Antworten Top
#6
Danke für die Hilfe. Es Funktioniert jetzt alles wie es soll.
Antworten Top


Gehe zu:


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