Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bestimmte Zellen füllen

Bestimmte Zellen füllen
29.06.2006 22:26:00
Hajo
Hallo zusammen. Sitze nun schon seit einiger Zeit an diesem Problem und komme zu keiner Lösung.
Das ganze sieht folgendermaßen aus: Es gibt eine Tabelle mit je zwei Spalten pro Mitarbeiter. In eine dieser Spalten wird die Arbeitszeit geschrieben und in der anderen soll die berechnete Arbeitszeit in Stunden eingetragen werden. Das ganze für jeden Tag im Monat.
Die Berechnung etc. ist alles kein Problem nur bei dem einfügen der berechneten Daten in die Zelle passieren merkwürdige Dinge. Eigentlich soll immer nur die Zelle rechts neben der gefüllt werden in die ich die Zeiten schreibe, aber Excel füllt alle Zellen ausgehend von dieser mit dem errechneten Wert. Ich versteh nurnoch Bahnhof.
-------------
Dim Zeile, Spalte As String
Dim ErgebnissPos As String
Spalte = Range(Target.Address).Columns.Address
Spalte = Mid(Spalte, 2, 2)
If Right(Spalte, 1) "$" Then
Spalte = Spalte
Else
Spalte = Left(Spalte, 1)
End If
Dim AsciiString, AsciiStringTemp As String
AsciiStringTemp = Range(Target.Address).Column + 65
If AsciiStringTemp AsciiString = Chr(Range(Target.Address).Column + 65)
End If
If AsciiStringTemp >= "91" Then
AsciiString = "A" & Chr(AsciiStringTemp - 25)
End If
Zeile = Int(Range(Target.Address).Row)
ErgebnissPos = "$" & AsciiString & "$" & Zeile
'Range(ErgebnissPos) = "bla"
MsgBox ErgebnissPos
Range(ErgebnissPos).Value = "bla"
------------
Vermutlich ist diese Lösung seeeehr kompliziert, aber ich hatte keinen anderen Ansatz. Das Problem ist, dass die Tabelle weiter geht als nur bis Z d.h. ich musste mir überlegen, wie ich "weiterzählen" kann um die Position zu ermitteln.
Aus diesem Grund arbeite ich mit den Ascii Codes und wandel die fröhlich hin und her. Das ganze funktioniert auch alles super. MsgBox ErgebnissPos zeigt brav die richtige (schon eins nach rechts verschobene zelle) an, nur das Range(ErgebnissPos).Value = "bla" macht mir Sorgen. Ohne das Range füllt er die aktuelle zelle mit dem Text und zeigt die um eins versetzte Position an. Mit Range zeigt er zuerst die richtige Position an, fängt dann aber an nach rechts zu wandern... Und zwar weit.
Ich hoffe ich habe mein Problem verständlich beschreiben können und hoffe auf kluge Ideen oder Lösungsansätze. Grüße Hajo

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen füllen
29.06.2006 22:49:35
Ramses
Hallo
du hast recht,... das ist nicht "sehr", sondern unglaublich kompliziert.
Wo stehen die Werte für die Arbeitszeitberechnung in Bezug zu der Zelle wo die Arbeitszeit eingetragen wird.
Z.B.
Eintrag der Arbeitszeit in F1
Anfang Arbeitszeit steht z.B. in E1
Gruss Rainer
AW: Bestimmte Zellen füllen
29.06.2006 23:31:48
Hajo
Hallo. Ich habe den Abschnitt mit der Berechnung bewusst weggellasen, um das Ganze nicht noch mehr in die Länge zu ziehen.
Eigentlich läuft alles was in der Tabelle passiert über Range(Target.Address).Value. Range(Target.Address).Value ist ja in dem Moment wo ich in eine Zelle die aktive Zelle und damit habe ich auch die Position der Zelle um die rechts daneben ansprechen zu können.
Ich rechne also mit den Werten die ich gerade in die Range(Target.Address).Value Zelle geschrieben habe und will diese dann mit der letzten zeile in meinem geposteten Code "Range(ErgebnissPos).Value = "bla"" in die Zelle daneben schreiben. Anstatt "bla" natürlich die errechneten werte.
Auf jeden Fall ist die Rechnerei sowie der restliche Code nicht relevant für den Fehler. der Rest funktioniert. Ich glaube der sprigende Punkt ist "Range(ErgebnissPos).Value = "bla"" auch wenn ich nicht weis warum.
Gruß Hajo
Anzeige
AW: Bestimmte Zellen füllen
30.06.2006 08:38:12
bst
Morgen,
Warum nicht einfach sowas ?
Target.Offset(0,1).Value = "bla"
cu, Bernd
AW: Bestimmte Zellen füllen
30.06.2006 10:32:27
Hajo
Diese Idee hatte ich auch schon, führt aber zu genau dem gleichen Fehler. Das ganze funktioniert prima wenn man "Private Sub Worksheet_SelectionChange(ByVal Target As Range)" benutzt. Das ist aber für meine Zwecke nicht ausreichen. Angenommen ich schreibe eine Zeit in die Zelle, dann muss ich aus der Zelle raus und wieder auf die selbe Zelle, damit er das Ergebniss berechnet.
Anders bei "Private Sub Worksheet_Change(ByVal Target As Range)" da passiert das sofort. Allerdings tritt dann das bereits beschriebene Problem auf. Selbst wenn man nur "Target.Offset(0,1).Value = "bla"" im Quellcode stehen hat.
Anzeige
AW: Bestimmte Zellen füllen
30.06.2006 10:57:26
Hajo
Also zumindest hab ich jetzt selbst festgestellt warum der Fehler auftritt: Wenn das über Worksheet_Change abläuft, wird ja in dem Moment, in dem ich die Zelle mit der Berechnung füllen lasse, das Workbook wieder geändert, ergo wiederholt sich der ganze Quellcode nocheinmal, und wieder und wieder.
Leider habe ich trotz dieser Erkenntniss weiterhin keine Lösung gefunden.
AW: Bestimmte Zellen füllen
30.06.2006 12:23:08
bst
Hi,
hätte ich mir ja denken könnnen, daß Du das in einem Worksheet_Change Ereignis machst ...
Schon mal einen Breakpoint dort rein gelegt und nachgeschaut was passiert ;-) ?
Mach mal sowas wie unten.
Wobei IMHO hier eine Überprüfung von Target schon angebracht wäre ...
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Target.Offset(0, 1).Value = Target.Value
    Application.EnableEvents = True
End Sub



cu, Bernd
Anzeige
AW: Bestimmte Zellen füllen
30.06.2006 12:37:37
Hajo
Danke, das scheint jetzt zu funktionieren. Zur Überprüfung mach ich mir noch Gedanken. Aber ich denke fürs erste erfüllt das jetzt seinen Zweck. Theoretisch kann ich die Überprüfung ja nach meiner alten komplizierten Methode machen ;)
Dank Euch für die Hilfe.
Hajo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige