Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen via VBA verbinden, aber wie genau, wenn...

Zellen via VBA verbinden, aber wie genau, wenn...
27.04.2008 08:51:00
Uwe
Guten Morgen,
ja, ja doch... ich schon wieder... Hätte da mal gern ein Problem, äh, des Rätsels Lösung!
Die Tage über war wer so gut und hat mir die nachfolgende Prozedur geschrieben:
Option Explicit

Private Sub CommandButton1_Click()
Dim Von As Long, Bis As Long, Zei As Long, Anf As Long, Ende As Long
With Worksheets(1)
Anf = IIf(.Range("A2") = "", .Range("A2").End(xlDown).Row, 2)
Ende = .Range("a" & .Rows.Count).End(xlUp).Row
.Range("C9:C39").ClearContents
.Range("C9:C39").UnMerge
For Zei = Anf To Ende
Next Zei
For Zei = Anf To Ende
Von = Zei
While Month(.Cells(Zei, 1)) = Month(.Cells(Zei + 1, 1)) And Weekday(.Cells(Zei, 1), vbMonday)  _
7
Zei = Zei + 1
If Zei > Ende Then Exit For
Wend
.Range("C" & Von & ":C" & Zei).Merge
.Range("C" & Von) = Application.WorksheetFunction.Sum(.Range("G" & Von & ":G" & Zei))
Next Zei
If Zei > Ende Then
.Range("C" & Von & ":C" & Zei - 1).Merge
.Range("C" & Von) = Application.WorksheetFunction.Sum(.Range("G" & Von & ":G" & Zei))
End If
End With
End Sub


Diese bewirkt, das die Zellen z.B. C9:C39 Monat für Monat pro Kalenderwoche verbunden werden. Die zusätzliche Berechnung ist hier eher nebensächlich... Soweit funktioniert diese Routine auch nahezu perfekt. Nuuur...
... orientiert sich diese an den Daten, die in Spalte a eingetragen sind. Also z.B. 01.05.08 in A9, ... 31.05.08 in A39. Leider benötige ich das so nicht. In Spalte B (Zellen B9:B39) stehen die maßgeblichen Wochentage (Mo-So) Daran soll, muß sich die Routine orientieren... (es sollen ja die Zellen der Spalte C verbunden werden, die eine Woche ergeben) Alternativ wäre es ebenso möglich, das Datum des Kalendermonats (z.B. 01.05.08) aus einer immer gleichbleibenden Zelle (z.B. D1) zu entnehmen.
Wäre schon klasse, so das jemand von Euch hinbekommt. Gerade bei einer für mich derart schwierigen Routine seh ich vor lauter Wald die Bäume nicht mehr...
Besten Dank für Eure Mühe.
Gruß
ich, äh Uwe
PS: Hoffenlich hab ich`s wenigstens geschafft, mich einigermaßen verständlich auszudrüchen...

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
...äh, Beispielmappe ? (owT)
27.04.2008 10:20:33
Renee

AW: ...äh, Beispielmappe ? (owT)
27.04.2008 10:27:00
Uwe
Hallo...
die Frage nach einer Beispielmappe ist berechtigt. Wie aber füge ich diese einem Beitrag hinzu? Ein Hinweis wäre praktisch, da ich so meine Vorhaben ganz sicher besser beschreiben könnte.
Gruß
Uwe
PS: Wer nicht dazu steht, auch mal unwissend zu sein, der ist einfach selber schuld...

AW: ...äh, Beispielmappe ? (owT)
27.04.2008 10:40:49
Renee
Hi Uwe,
Wenn du einen Beitrag schreibst, steht über der roten Zeile Hier geht es zum File-Upload und da klickst mit deinem Mäusle mal drauf ;-)
GreetZ Renée

AW: ...äh, Beispielmappe ? (owT)
27.04.2008 10:48:00
Uwe
Hallo Renee!
Habs gerade eben gesehen. Danke für den Hinweis.
Gruß
Uwe

Anzeige
AW: ...äh, Beispielmappe ? (owT)
27.04.2008 10:53:00
Uwe
Als Anlage mal eine Beispielarbeitsmappe...
... vielleicht versteht sich mein Anliegen dann besser.
Besten Dank für Eure Mühe
Die Datei findet sich unter:
https://www.herber.de/bbs/user/51899.xls
Änder Ihr das Datum in Zelle A9 und klickt auf die Schaltfläche so erkennt ihr das, was geschehen soll...

WENN(Beispielmappe;"Lösung";"")
27.04.2008 11:31:39
Renee
Hi Uwe,
Versuch's mal so, statt deinem Code:

Private Sub CommandButton1_Click()
Dim lx As Long, lxx As Long
Dim dSum As Double
Me.Range("C9:C39").ClearContents
Me.Range("C9:C39").UnMerge
For lx = 9 To 39
dSum = dSum + Me.Cells(lx, 7).Value
If Application.WorksheetFunction.Weekday(Me.Cells(lx, 2).Value, 2) = 7 _
Or lx = 39 Then
lxx = IIf(lx 


GreetZ Renée

Anzeige
AW: WENN(Beispielmappe;"Lösung";"")
27.04.2008 11:54:15
Uwe
Hallo Renee!
Auch Deine Lösung passt (leider) nur fast!!! Du hast Dich, wenn ich`s richtig verstanden habe, an den Daten in den Zellen B9:B39 orientiert. Das ist auch soweit richtig. Nur steht in den einzelnen Zellen kein Datum (z.B. 01.05.08...31.05.08) sondern "nur" Mo, Di, Mi, Do... Sa, So. So gesehen suche ich nach einer Lösung, die das berücksichtigt! Also z.B. steht in Zelle B9 "Do" und nicht 01.05.08 im Fortmat "TTT"
Sory und besten Bank für Deine Mühe mir viell. doch behilflich sein zu können.
Gruß
Uwe

Regeln ?
27.04.2008 11:59:00
Renee
Hi Uwe,
1. Und warum ist das in der Beispielmappe nicht so?
2. Woher kommt das "Do", wenn nicht von der Formel?
3. Was passiert, wenn da jemand "Mi" reinschreibt, das Datum aber eigentlich "Mo" wäre ?
4. Wenn in Spalte A immer ein Datum steht (und auf diesers Verlass ist!), dann:

ersetze alle: 
(lx, 2)
, im Code, durch:
(lx, 1)


GreetZ Renée

Anzeige
AW: Regeln ?
27.04.2008 12:42:00
Uwe
Hallo Renee!
Sorry, aber ich versuch einfach seit geraumer Zeit jemandem wie Dich verständlich zu machen, das weder in den Zellen A9:A39 noch in den Zellen B9:B39 ein Datum steht. In den Zellen A9:A39 steht "nur" 1 bis 31 (eben so, wie`s im Monat benötigt wird) und in den Zellen B9:B39 eben die Wochentage Mo-So (je nach Monat eben...) Diese Eintragungen erfolgen ebenso via VBA-Routine:
Option Explicit

Public Sub TageImMonat()
Dim Anz_Tage      As Integer
Dim Anz_Blaetter  As Integer
Dim Anz_Eintrag   As Integer
Dim Datum         As Date
Dim BegDatum      As Date
Application.ScreenUpdating = False
Sheets("Start").Activate
If IsDate([K10]) Then
Datum = "01." & Month([K10]) & "." & Year([K10])
Else
MsgBox "Bitte Abrechnungsmonat eintragen!", 16, "   Hinweis für " & Application.UserName
Exit Sub
End If
Anz_Tage = Day(DateSerial(Year(Datum), Month(Datum) + 1, 0))
For Anz_Blaetter = 1 To Sheets.Count
Sheets(Anz_Blaetter).Activate
If ActiveSheet.Name = "Siebers" Then
Range("A9:B39").ClearContents
BegDatum = Datum
For Anz_Eintrag = 1 To Anz_Tage
Range("A" & Anz_Eintrag + 8).Value = Format(Day(BegDatum), "00")
Range("B" & Anz_Eintrag + 8).Value = Format(BegDatum, "ddd")
BegDatum = BegDatum + 1
Next Anz_Eintrag
End If
Next Anz_Blaetter
Application.ScreenUpdating = True
Sheets("Start").Select
End Sub


Diese Routine führt eben dazu, das nur ein Wert und kein Datum irgendwo in den Zellen "A9:B39" zu finden ist. Daher meine inzwischen verzweifelte Bitte, Suche nach einer Möglichkeit, das eben die Eintragungen der Zellen B9:B39 für die gesuchte Prozedur maßgebend sind.
Vielleicht wird`s so deutlicher?
Besten Dank für Deine Mühe.
Gruß
Uwe
PS: Geht`s so gar nicht, werde ich die nötigen Programmbestandteile, die schon fertig sind, in einer Beispielmappe zusammenstellen und hochladen. Dann sollte es zu schaffen sein...

Anzeige
AW: Regeln ?
27.04.2008 12:52:59
Renee
Hi Uwe,
Deine Verzweiflung kann ich verstehen, nicht aber die Regeln!
Alle deine Bespielcodes arbeiten mit Datümer!
Was du in der Zelle siehst ist allein von der Formatierung abhängig und hat nichts mit dem Inhalt zu tun, sofern es sich um ein Datum handelt. D.h. z.B. eine Formatierung eines Datums auf nur den Monatstag (1-31) hat keinen Einfluss auf den Code, der aus diesen Werten den Wochentag bestimmt. Du kannst also 1-31 sehen und trotzdem steht ein Datum drin! Wenn du die Abkürzungen für die Wochentag von Hand oder als String in VBA einfügst, ist dann z.B. sichergestellt das immer die Reihenfolge "Mo, Di, Mi, Do, Fr, Sa, So" eingehalten wird? Ich meine, wenn du das schon per VBA machst, warum dann nicht auch gleich die Summierung ?
Also nochmal: Lade ein Beispiel wie die Ausgangsdaten wirklich sind und erläutere Schritt für Schritt die Regeln, wie aufgrund dieser eine Summe gebildet werden soll.
GreetZ Renée

Anzeige
AW: Regeln ?
27.04.2008 13:08:20
Uwe
Hallo Renee!
Eigentlich sollte ich nicht schimpfen wie`n Rohrspatz, sondern Dir viel lieber sehr sehr dankbar sein. Irgendwie geht (heute) alles schief. Ich hatte gerade eben eine Beispielmappe aufbereitet, die sich aber leider nicht hochladen läßt, da etwas größer als die erlaubten 300 kb. Blöde.
Im Augenblick seh ich vor lauter Wald die Bäume nicht mehr und brauch einfach ne Pause. Ich meld mich hier im Forum wieder. O.k.? (Wär immer noch super gut, so Du mir helfen könntest...)
Mal seh`n ob ich dann ne bessere Beschreibung hinbekomme.
Besten Dank
Gruß
Uwe

Anzeige
Zip die Datei und lad sie hoch (owT)
27.04.2008 17:57:00
Renee

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige