Thema Datum  Von Nutzer Rating
Antwort
29.03.2011 14:33:51 Mario H
Solved
29.03.2011 14:40:48 Severus
*****
Solved
29.03.2011 14:56:30 Mario H
NotSolved
29.03.2011 16:09:56 Severus
NotSolved
14.04.2011 12:45:47 Mario H
NotSolved
14.04.2011 13:51:41 Severus
NotSolved
14.04.2011 14:23:00 Mario H
NotSolved
14.04.2011 15:03:07 Severus
NotSolved
15.04.2011 10:44:20 Gast61568
NotSolved
15.04.2011 11:38:36 Severus
NotSolved
15.04.2011 13:13:34 Mario H
NotSolved
15.04.2011 18:36:21 Severus
NotSolved
15.04.2011 17:59:48 Mario H
NotSolved
15.04.2011 18:37:41 Severus
NotSolved
16.04.2011 04:54:29 Severus
*****
Solved
Blau Werte aus nebenstehnder Zelle übernehmen
21.04.2011 10:43:54 Mario H
NotSolved
21.04.2011 10:48:45 Mario H
NotSolved
21.04.2011 10:48:46 Mario H
NotSolved
21.04.2011 11:09:06 Serverus
NotSolved
21.04.2011 11:31:09 Mario H
NotSolved
21.04.2011 16:33:17 Severus
NotSolved

Ansicht des Beitrags:
Von:
Mario H
Datum:
21.04.2011 10:43:54
Views:
1401
Rating: Antwort:
  Ja
Thema:
Werte aus nebenstehnder Zelle übernehmen

<p> Hallo zusammen,</p> <p> nun kann ich wirklich sagen, dass der Code funktioniert. Ich habe ihn umfangreich getest und habe bis jetzt keine technischen Schwierigkeiten festgestellt. Ein Frage habe ich allerdings noch.</p> <p> Ich habe festgestellt, dass die Berechnung bei ein &Auml;nderung mit unter recht lange dauert (bis zu 15 Sekunden). Der Code wird im Moment auf ca. 25 Arbeitsbl&auml;ttern ausgef&uuml;hrt. Kann es sein, dass es daran liegt, dass der Code nun unter &quot;DieseArbeitmappe&quot; steht und daher bei jeder &Auml;nderung auf allen 25 Arbeitsbl&auml;ttern durchgef&uuml;hrt wird auch wenn die &Auml;nderung nur auf einem Arbeitsblatt erfolgt.</p> <p> Als der Code noch in jedem einzelnen Arbeitsblatt eingetragen war, ging die Berechnung deutlich schneller. Allerdings war sie fehlerhaft (siehe Beitr&auml;ge zuvor). Nun stellen sich f&uuml;r mich zwei Fragen: 1. Woran liegt es, dass die Berechnung so lange dauert? 2. Gibt es eine M&ouml;glichkeit den Code so zu schreiben, dass er effektiver Arbeitet?</p> <p> Der Code sieht im Moment so aus:</p> <p> DieseArbeitsmappe:</p> <pre class="brush:vb;"> Private Sub Workbook_open() &#39; Speichern der aktuellen Werte Dim rgG As Range, i As Double &#39;Alle M-Zellen Set rgG = Range(&quot;M1:M400&quot;) i = 0 For Each C In rgG arrG(i) = C.Value i = i + 1 Next End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Sh.Name = &quot;Rechnung&quot; Or Sh.Name = &quot;Ergebnisse&quot; Then Exit Sub Application.EnableEvents = False &#39; Im Tabellenblatt wurde eine Berechnung durchgef&uuml;hrt Dim i As Double, zeile As Double zeile = 0 &#39; &Uuml;bereinstimmung wird gepr&uuml;ft (hat sich was in den M-Zellen ge&auml;ndert?) For i = 0 To UBound(arrG) zeile = i + 1 &#39; Wenn gespeicherter Wert ungleich aktueller Wert in M, dann ... If arrG(i) &lt;&gt; Cells(zeile, 13) Then &#39; ...: wenn Zelle J = alter Wert M, dann If Cells(zeile, 10) = arrG(i) Then &#39; Wertzuweisung J-Zelle und neuer Wert, ... arrG(i) = Cells(zeile, 13) Cells(zeile, 10) = Cells(zeile, 13) Else &#39; ...sonst nur M-Zelle in Array arrG(i) = Cells(zeile, 13) End If End If Next Application.EnableEvents = True End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) </pre> <pre class="brush:vb;"> If Sh.Name = &quot;Rechnung&quot; Or Sh.Name = &quot;Ergebnisse&quot; Then Exit SubApplication.EnableEvents = False</pre> <p> &#39; Im Tabellenblatt wurde eine Berechnung durchgef&uuml;hrt<br /> Dim i As Double, zeile As Double<br /> zeile = 0<br /> &#39; &Uuml;bereinstimmung wird gepr&uuml;ft (hat sich was in den M-Zellen ge&auml;ndert?)<br /> For i = 0 To UBound(arrG)<br /> zeile = i + 1<br /> &#39; Wenn gespeicherter Wert ungleich aktueller Wert in M, dann ...<br /> If arrG(i) &lt;&gt; Cells(zeile, 13) Then<br /> &#39; ...: wenn Zelle J = alter Wert M, dann<br /> If Cells(zeile, 10) = arrG(i) Then<br /> &#39; Wertzuweisung J-Zelle und neuer Wert, ...<br /> arrG(i) = Cells(zeile, 13)<br /> Cells(zeile, 10) = Cells(zeile, 13)<br /> Else<br /> &#39; ...sonst nur M-Zelle in Array<br /> arrG(i) = Cells(zeile, 13)<br /> End If<br /> End If<br /> Next<br /> Application.EnableEvents = True<br /> End Sub<br /> <br /> Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)</p> <br /> <pre class="brush:vb;"> If Sh.Name = &quot;Rechnung&quot; Or Sh.Name = &quot;Ergebnisse&quot; Then Exit Sub&#39; Weiterhin f&uuml;r manuelle &Auml;nderung in J-Zellen</pre> <p> Dim rC As Range<br /> Application.EnableEvents = False<br /> If Not Intersect(Target, Range(&quot;M1:M400&quot;)) Is Nothing Then<br /> For Each rC In Target<br /> If rC.Column = 13 Then<br /> If rC.Offset(0, -3) = &quot;&quot; Then rC.Offset(0, -3) = rC<br /> End If<br /> Next rC<br /> End If<br /> If Not Intersect(Target, Range(&quot;J1:J400&quot;)) Is Nothing Then<br /> For Each rC In Target<br /> If rC.Column = 10 Then<br /> If rC = &quot;&quot; Then rC = rC.Offset(0, 3)<br /> End If<br /> Next rC<br /> End If<br /> Application.EnableEvents = True<br /> End Sub</p> <br /> <p> Modul:</p> <pre class="brush:vb;"> &#39; Array-Variablen zum Speichern der Werte Public arrG(65535) As Double </pre> <p> Ich w&uuml;rde mich &uuml;ber Hilfe sehr freuen</p> <p> Besten Gru&szlig;</p> <p> Mario</p>


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.03.2011 14:33:51 Mario H
Solved
29.03.2011 14:40:48 Severus
*****
Solved
29.03.2011 14:56:30 Mario H
NotSolved
29.03.2011 16:09:56 Severus
NotSolved
14.04.2011 12:45:47 Mario H
NotSolved
14.04.2011 13:51:41 Severus
NotSolved
14.04.2011 14:23:00 Mario H
NotSolved
14.04.2011 15:03:07 Severus
NotSolved
15.04.2011 10:44:20 Gast61568
NotSolved
15.04.2011 11:38:36 Severus
NotSolved
15.04.2011 13:13:34 Mario H
NotSolved
15.04.2011 18:36:21 Severus
NotSolved
15.04.2011 17:59:48 Mario H
NotSolved
15.04.2011 18:37:41 Severus
NotSolved
16.04.2011 04:54:29 Severus
*****
Solved
Blau Werte aus nebenstehnder Zelle übernehmen
21.04.2011 10:43:54 Mario H
NotSolved
21.04.2011 10:48:45 Mario H
NotSolved
21.04.2011 10:48:46 Mario H
NotSolved
21.04.2011 11:09:06 Serverus
NotSolved
21.04.2011 11:31:09 Mario H
NotSolved
21.04.2011 16:33:17 Severus
NotSolved