Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
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
Inhaltsverzeichnis

Zelle E100:AI100 wird umgeschrieben

Zelle E100:AI100 wird umgeschrieben
22.01.2018 06:40:02
Johann
Hallo Liebe Forumgemeinde,
Dank eurer Hilfe habe ich schon einiges geschafft
und bin sehr Stolz auf euch!
Jetzt zum Problem :)
Ich habe in der Reihe E100:AI100 eine Formel.
Diese wird nach ablauf Code umgeschrieben.
Ich finde jedoch nicht wo im Code dies passiert.
bzw. das soll nicht passieren.
Option Explicit
Sub Namen_einlesen(TargetSheet As Worksheet)
If WorksheetFunction.CountA(Range("E2:AI99")) = 0 Then
Dim lngLast As Long
With Sheets("Daten")
lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
TargetSheet.Range("A2:D99").ClearContents
.Range("A2:D" & lngLast).Copy
TargetSheet.Range("A2").PasteSpecial xlPasteValues
TargetSheet.Range("A2").PasteSpecial xlPasteFormats
TargetSheet.Range("A2").PasteSpecial xlPasteComments
Application.CutCopyMode = False
End With
Call mitarbeiterTage(TargetSheet)
Else
Exit Sub
End If
End Sub
Sub mitarbeiterTage(TargetSheet As Worksheet)
Dim lngLast As Long, lngRow As Long, lngCol As Long, lngLastCol As Long
Dim varTemp As Variant, varRet As Variant, lngWeek As Long, lngDay As Long
Dim objData As Worksheet
Set objData = Worksheets("Daten")
With TargetSheet
lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)
lngLastCol = 4 + Day(DateSerial(Year(TargetSheet.Range("E1")), Month(TargetSheet.Range("E1") _
) + 1, 0))
varTemp = .Range(.Cells(1, 3), .Cells(lngLast, lngLastCol))
For lngRow = 2 To UBound(varTemp, 1)
varRet = Application.Match(varTemp(lngRow, 1), objData.Columns(3), 0)
If IsNumeric(varRet) Then
For lngCol = 3 To UBound(varTemp, 2)
If isHolyday(varTemp(1, lngCol)) = "" And Weekday(varTemp(1, lngCol), vbMonday) 

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 07:30:16
Johann
Ich habe im ersten Code ein Apostroph im ersten Code vor:
Call mitarbeiterTage(TargetSheet)gesetzt.
Nun weiß ich wenigstens das mein Problem im zweiten Code liegt.
Sub mitarbeiterTage(TargetSheet As Worksheet)
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 07:58:03
Sepp
Hallo Johannes,
ändere
lngLast = Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)

um in
lngLast = Application.Min(99, Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row))
Gruß Sepp

Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 08:15:46
Johann
Danke schön Sepp,
habs geändert, jedoch ohne erfolg.
Im nachhinein finde ich das schreiben der Formel per VBA sogar besser.
So kann dieser von Kollegen nicht kaputt gemacht werden, welche mit PC nicht so fit sind.
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 08:17:13
Sepp
Hallo Johannes,
wie soll die Formel den aussehen?
Gruß Sepp

AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 08:42:11
Johann
per formel:
=$A$100-SUMME(E102:E148)
=$A$100-SUMME(F102:F148)
=$A$100-SUMME(G102:G148)
... Bis =$A$100-SUMME(AI102:AI148) wobei die 148 per XlDown
Hab mir sowas überlegt. Geht aber nicht :(
Sub Makro1()
Dim s As Integer
For s = 5 To 35
With Cells(100, s)
.WorksheetFunktion.Sum (.Range(Cells(102, s).End(xlDown)))
End With
Next
End Sub

Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 08:52:13
Johann

Sub Makro1()
Dim s As Integer
For s = 5 To 35
Application.WorksheetFunction.Sum (.Range(Cells(100, 1), -.Range(Cells(102, s).End(xlDown))) _
)
Next
End Sub
so gehts leider auch nicht.
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 09:12:54
Werner
Hallo Johann,
wenn ich das richtig sehen, dann hast du ja deine letzte belegte Zeile/Zelle schon in der Variablen lngLetzte.
Dann so:
For i = 5 To 35
Cells(100, i) = Cells(100, 1) - WorksheetFunction.Sum(Range(Cells(102, i), Cells(lngLast, i) _
))
Next i
Gruß Werner
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 09:42:06
Johann
Danke Werner,
nun heißt es unzulässiger oder nicht ausreichend deffinierter verweis.
Sub Makro1()
Dim lngLast  As Long
Dim i As Integer
lngLast = Application.Max(102, .Cells(.Rows.Count, 3).End(xlUp).Row)
For i = 5 To 35
Cells(100, i) = Cells(100, 1) - WorksheetFunction.Sum(Range(Cells(102, i), Cells(lngLast, i) _
))
Next i
End Sub

Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 09:48:07
Werner
Hallo Johann,
anscheinend hast du das Ganze wohl in einer With - End With Klammer stehen.
Dann muss jeweils vor jedes Cells und jedes Range jeweils ein Punkt.
Gruß Werner
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 09:54:06
Johann
Es war keine With - End With methode.
Aber dein Tipp war super. Beim rausnehmen der punkte hats funktioniert. TOP!
Nur habe ich keine Formeln mehr stehen sondern nur noch ergebnisse.
Ich sehe mein fehler der schlechten ausdrucksweise ein :)
Gerne u. Danke für die Rückmeldung. o.w.T.
22.01.2018 10:07:41
Werner
AW: Zelle E100:AI100 wird umgeschrieben
23.01.2018 03:09:50
Werner
Hallo Johann,
wenn es Formeln sein sollen dann:
For i = 5 To 35
Cells(100, i).FormulaR1C1 = "=R100C1-SUM(R102C" & i & ":R" & lngLast & "C" & i & ")"
Next i
Gruß Werner
Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 09:28:06
Sepp
Hallo Johann,
lade eine Monatstabelle mit den korrekten Formeln hoch, bitte alle Formeln im betroffenen Bereich!
Geht die MA-Tabelle immer maximal bis Zeile 99? Und die Formeln immer von Zeile 100 bis 148?
Gruß Sepp

AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 10:16:02
Johann
https://www.herber.de/bbs/user/119158.xlsx
Ja MA geht immer bis max 99 die formel in bezug zu A100 spaltenweise jeden Tag.
erste =A100-Summe(E103:letzte Zeile/Zelle)
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 14:35:43
Sepp
Hallo Johannes,
teste mal.
Sub mitarbeiterTage(TargetSheet As Worksheet)
Dim lngLast As Long, lngRow As Long, lngCol As Long, lngLastCol As Long
Dim varTemp As Variant, varRet As Variant, lngWeek As Long, lngDay As Long
Dim objData As Worksheet

Set objData = Worksheets("Daten")

'der code für die MA Tage wird nur im jeweils aktiven Monat benötigt. bzw wird beim einlesen im Monat angerufen
With TargetSheet
  lngLast = 99
  lngLastCol = 4 + Day(DateSerial(Year(TargetSheet.Range("E1")), Month(TargetSheet.Range("E1")) + 1, 0))
  varTemp = .Range(.Cells(1, 3), .Cells(lngLast, lngLastCol))
  For lngRow = 2 To UBound(varTemp, 1)
    varRet = Application.Match(varTemp(lngRow, 1), objData.Columns(3), 0)
    If IsNumeric(varRet) Then
      For lngCol = 3 To UBound(varTemp, 2)
        If isHolyday(varTemp(1, lngCol)) = "" And Weekday(varTemp(1, lngCol), vbMonday) < 6 Then
          lngDay = Weekday(varTemp(1, lngCol), vbMonday)
          lngWeek = (DINKwoche(varTemp(1, lngCol)) Mod 2 = 0) * -5
          If objData.Cells(varRet, 4 + lngDay + lngWeek) = "x" Then
            varTemp(lngRow, lngCol) = "x"
          Else
            varTemp(lngRow, lngCol) = ""
          End If
        End If
      Next
    End If
  Next
  .Range(.Cells(1, 3), .Cells(lngLast, lngLastCol)) = varTemp
  lngLast = 102 + Application.CountA(.Range("AK2:AK99"))
  .Range("A100").Formula = "=COUNTA(B2:B99)-SUM(AL2:AL100)"
  .Range("E100:AI100").Formula = "=$A$100-SUM(E103:E" & lngLast & ")"
  .Range("C103:C" & lngLast).Formula = "=AK2"
  .Range("D103:D" & lngLast).Formula = "=AL2"
  .Range("E103:AI" & lngLast).Formula = "=IF(COUNTIF(E$2:E$99,$C103)=$D103,"""",COUNTIF(E$2:E$99,$C103))"
End With

Set objData = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
23.01.2018 11:39:51
Johann
Hallo Sepp,
Vielen Dank für die Hilfe!
Dein Code läuft Prima.
Die Formeln werden sauber übertragen und passen.
Leider muss ich aber im Anschluß jede Zelle anklicken und
mit Enter bestätigen.
Ich weiß nicht ob es an excel liegt oder am Code, dass er
alle Formeln in Row 100 mit "####" schreibt.
Viele Grüße
Johann
AW: Zelle E100:AI100 wird umgeschrieben
23.01.2018 11:43:47
Sepp
Hallo Johannes,
checke mal das Zellformat! Mir ist aufgefallen, dass du viele Zellen als Text formatiert hast, dann tritt das von die beschriebene Phänomen auf.
Gruß Sepp

Anzeige
AW: Zelle E100:AI100 wird umgeschrieben
23.01.2018 12:10:31
Johann
Johann
Danke Sepp! :)
formel per vba in RECHERCHE eingeben...
22.01.2018 08:53:44
robert
..dazu gibt es die RECHERCHE um Selbsthilfe zu betreiben :-)
AW: Zelle E100:AI100 wird umgeschrieben
22.01.2018 08:06:42
Johann
Damit dies nicht zu kompliziert wird evtl. einen anderen Lösungsweg?
hab mir gedacht nach ablauf vom Code die Formel einfach in den Code integrieren.
von E100 bis AI100
Sub Makro1()
Dim s As Integer
For s = 5 To 35
With Cells(100, s)
.FormulaR1C1 = "=Cells(100, 1) - Summe(Cells(102, s).End(xlDown))"
End With
Next
End Sub
leider weiß ich jedoch nicht wie dies in Schleife geschrieben wird.
Es heißt Laufzeitfehler 1004
Anwendungs- oder objektdefinierter Fehler
wenn ich das = vor Cells(100,1) rausnehme schreib er mir nur den Code in die gewünschten zellen,
an stelle der Formel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige