Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 14:18:05
28.04.2024 13:43:14
Anzeige
Archiv - Navigation
1908to1912
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

Werte festsetzen und Formeln löschen

Werte festsetzen und Formeln löschen
06.12.2022 16:04:38
Manuel
Hallo zusammen,
ich habe folgenden Code, damit in einer bestimmten Zeile ein Wert festgesetzt und die Formel heraus genommen wird. Nun möchte ich das auf weitere Zeilen beziehen. Gibt es ein Möglichkeit das auch auf Tb.Rows 24,28,32 etc. zu automatisieren?
Gruß
Manuel
Hier der Code:
'Der folgende Code setzt die Monatswerte der Deputate in allen Lehrerübersichten auf den Wert ohne Formel

Private Sub Workbook_Open()
Dim Tb As Worksheet, MinDat As Date
Dim Datum As Date, Sp As Integer, RNG As Range
'Erster der Vormonats
Datum = DateSerial(Year(Date), Month(Date) - 1, 1)
For Each Tb In ThisWorkbook.Sheets
Select Case Tb.Name
Case "01_Start", "02_Auswertung_Fachb._Klassen", "03_Verlauf_Deputate", "zzz_Daten", "02.1_Auswertung_Stufen"
'mach nichts
Case Else
Set RNG = Tb.Rows(20)
'Datum vorhanden
Sp = WorksheetFunction.CountIf(RNG, CDbl(Datum))
'in welcher Spalte
If Sp > 0 Then
Sp = WorksheetFunction.Match(CDbl(Datum), RNG, 1)
Else
MinDat = WorksheetFunction.Min(RNG)
If MinDat > Datum Then
'Es gibt keinen Vormonat aber den aktuellen Monat
'Also keinen Fehler ausgeben
'mache nichts
GoTo Weiter
Else
MsgBox "Monatsfehler auf Blatt: " & Tb.Name & vbLf & vbLf & "Bearbeitung gestoppt"
Exit Sub
End If
End If
'Hat Zelle eine Formel?
With Intersect(RNG, Tb.Columns(Sp)).Offset(1, 0) 'Schnittmenge aus Zeile und Spalte
'Wenn Formel, dann als Wert festschreiben
If .HasFormula Then
.Value = .Value
End If
End With
End Select
Weiter:
Next
Sheets(1).Activate
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte festsetzen und Formeln löschen
06.12.2022 17:42:09
Yal
Hallo Manuel,
Version 1: ersetze den feste Set durch einen For Each auf "Areas" (einen Next muss noch an der richige Stelle)

'            Set RNG = Tb.Rows(20)
For Each RNG In Tb.Range("24:24,28:28,32:32").Areas
Version 2: ein For Each auf eine zusätzliche Variable:

        For Each R In Array(24, 28, 32)
Set RNG = Tb.Cells(R, 1).EntireRow
VG
Yal
AW: Werte festsetzen und Formeln löschen
06.12.2022 18:03:44
Daniel
HI
am einfachsten zu integrieren wäre eine zusätzliche Schleife über die Zeilen.
a) wenige Zeilen oder unregelmäßig verteilte Zeilen mit festen Zeilennummern:
so wie von Yal vorgeschlagen mit For-Each-In-Schleife über ein Array mit den Zeilennummern oder die Areas einer Range
b) bei regelmäßig verteilten Zeilen mit festen Abständen (vorallem wenns viele sind)

Dim Z as Long
Case Else
For  Z = 20 to 32 Step 4
Set RNG = Tb.Rows(Z)
... hier der weitere Code unverändert
Next
end Select
Sollte es vorkommen, dass die Zeilennummern der relevanten Zeilen nicht bekannt oder variabel sind und die Zeilen gesucht werden müssen, würde das natürlich auch gehen, aber dann bräuchten wir genauere Informationen, wie man die Zeilen erkennt.
Gruß Daniel
Anzeige

42 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige