Avatar

Stare alkusze kalkulacyjne - conditional formatting (Ogólne)

by Neo, Birkenhead (UK), 2025-03-02, 16:28 (13 days ago)
edited by Neo, 2025-03-04, 21:09

Hej! Jest zagwozdka do ogarnięcia. By usprawiedliwić "potrzebę" posiadania 32 MB RAMu w moim 386, zainstalowałem na nim Windowsa 95 i używam go do kontroli inwentarza i planowania produkcji moich małych elektronicznych projektów. Wszystko na Microsoft Office 95 - baza w Access i parę spreadsheetów. Chciałem zzrobić coś na kształt większego production plannera jaki mam w robocie no i jest drobny kłopot - conditional formatting został wprowadzony dopiero w Office 97, który ponoć na 386 nie odpali. Da radę to ogarnąć jakimś makrem? Na razie mam półśrodek jak na załączonym obrazku:
[image]

Avatar

Stare alkusze kalkulacyjne - conditional formatting

by Neo, Birkenhead (UK), 2025-03-03, 00:39 (13 days ago) @ Neo

Cholera, ale się walnąłem... Miało być 32 MB RAMu - gdzie tu jest opcja edit?

Stare alkusze kalkulacyjne - conditional formatting

by tom ⌂, 2025-03-03, 06:02 (13 days ago) @ Neo

Sprobuj teraz, powinno sie juz dac edytowac stare posty.

Avatar

AI vba macro

by smola ⌂, 2025-03-03, 06:22 (13 days ago) @ Neo

AI jednak na cos moze sie przydac, moja ostatnio polubiona wyszukiwarka perplexity.ai tak twierdzi ;)
Tutaj jej pelna odpowiedz a nizej kod jaki wyplula, wyglada na ok, ale musisz potestowac:
conditional formattinig as vba macro in Microsoft Office 95

Sub ApplyConditionalFormatting()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim lastCol As Long
    Dim colIndex As Integer
    Dim dataRange As Range
    Dim maxRow As Long

    ' Set the worksheet
    Set ws = ActiveSheet

    ' Find the last row and column with data
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' Start from column C (3rd column)
    For colIndex = 3 To lastCol
        ' Define the range for conditional formatting (2nd row to second-to-last row)
        Set dataRange = ws.Range(ws.Cells(2, colIndex), ws.Cells(lastRow - 1, colIndex))

        ' Clear any existing conditional formatting
        dataRange.FormatConditions.Delete

        ' Add a Color Scale conditional format (green to red)
        With dataRange.FormatConditions.AddColorScale(2)
            .ColorScaleCriteria(1).Type = xlConditionValueLowestValue
            .ColorScaleCriteria(1).FormatColor.Color = RGB(0, 255, 0) ' Green
            .ColorScaleCriteria(2).Type = xlConditionValueHighestValue
            .ColorScaleCriteria(2).FormatColor.Color = RGB(255, 0, 0) ' Red
        End With

        ' Add a formula to calculate the maximum value in the column at the bottom row
        maxRow = lastRow + 1
        ws.Cells(maxRow, colIndex).Formula = "=MAX(" & dataRange.Address & ")"
    Next colIndex

    MsgBox "Conditional formatting applied and maximum values calculated!"
End Sub

Avatar

vba macro

by Neo, Birkenhead (UK), 2025-03-08, 23:17 (7 days ago) @ smola

Dzięki, to uruchomiło mi zastane klepki w głowie i ogarnąłem. Pewnie można by to zrobić bardziej elegancko i automatycznie, ale mam póki co tylko 4 komórki do sformatowania, więc to wystarcza:


'
' CondF Macro
' Applies conditonal formatting to cells F4-F7
'
'
Sub CondF()
    Range("F4").Select
    If Selection.Value < 0 Then Selection.Font.ColorIndex = 3 Else Selection.Font.ColorIndex = 10
    Range("F5").Select
    If Selection.Value < 0 Then Selection.Font.ColorIndex = 3 Else Selection.Font.ColorIndex = 10
    Range("F6").Select
    If Selection.Value < 0 Then Selection.Font.ColorIndex = 3 Else Selection.Font.ColorIndex = 10
    Range("F7").Select
    If Selection.Value < 0 Then Selection.Font.ColorIndex = 3 Else Selection.Font.ColorIndex = 10
End Sub


[image]

--
DIY woodbox: AM386DX40, 32MB RAM, Diamond Stealth VRAM 1MB, AZT2316, Primax M16B, ST3491A, 256MB CF
Socket 7: AOpen AP59s, Cyrix M II-300GP, 64MB SDRAM, SiS 6326, CT3670, SCSI
Socket A: WinFast K7S741, Sempron 2400+ @1960, 1GB, GF 6600, SB0090, SIL3114