/ Forside/ Teknologi / Administrative / MS-Office / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
Excel - baggrund farve
Fra : Gigantor
Vist : 1347 gange
20 point
Dato : 02-11-04 11:52

Er der nogen der kan fortælle mig hvorfor dette ikke virker?

=TÆL.HVIS(A:A;Selection.Interior.ColorIndex="Green")

Jeg har en masse poster i Excel, med en farvekode der fortæller hvor langt en sag er noget i processen. Det vil jeg gerne kunne tælle op i et status ark, men jeg kan ikke få Excel til at læse baggrunds farven. Er der nogen der kan hjælpe mig på vej?
MVH Jon

PS. Jeg kender både VBS og VB, men ikke i denne sammenhæng.

 
 
Kommentar
Fra : Gigantor


Dato : 02-11-04 11:56

Det kunne også være rart, hvis jeg kunne gemme en dato for hvornår farven er skiftet (i et andet felt selvfølgelig).

På forhånd tak for hjælpen!

Kommentar
Fra : emesen


Dato : 02-11-04 12:53

Det er vel en skrivefejl her at du mangler A:A >A1:A5

Kommentar
Fra : emesen


Dato : 02-11-04 13:12

Jeg prøvede lige - det hjalp heller ikke.
Men "tæl" tæller jo tal.
Så måske er det tælv du skal bruge. Jeg fik den ikke til at tælle farver.
En idé er måske en kolonne hvor farven er omsat til tal


Kommentar
Fra : Gigantor


Dato : 02-11-04 18:44

Jeg har lavet følgende kode til at sætte en dato på hver sag. Jeg forstiller at man vælger en kolonne og vælger en af farverne; rød, blå og grøn. Og så skriver man et x (eller hvad man nu har lyst til) i kolonne A.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strRange As String
strRange = returnRangeForA(Target.Address)
If (Target.Interior.Color = vbRed Or Target.Interior.Color = vbBlue Or Target.Interior.Color = vbGreen) Then
Application.EnableEvents = False
Range(strRange) = Date
Application.EnableEvents = True
End If
End Sub

' Funktionen søger for at det kolonnen A der bliver valgt..
Public Function returnRangeForA(ByVal strRange As String)
strRange = Right(strRange, (Len(strRange) - InStrRev(strRange, "$")))
strRange = "A" & strRange
returnRangeForA = strRange
End Function

Nu prøver jeg at lave en sub, som køre når Status arket bliver valgt og så tæller alle de andre arks forskellige sager, på baggrund af farve koden.

Kommentar
Fra : Gigantor


Dato : 02-11-04 19:30

Puuh. Nu har jeg lavet det, men den er godt nok laaangsom. Derfor har jeg lavet det til en knap istedet..
Public Function GetProgress(ByVal objSheet As Excel.Worksheet, ByVal varColor As Long)
Dim oCell As Excel.Range
Dim oSheet As Excel.Worksheet
Dim intCounter As Integer
intCounter = 0
Set oSheet = objSheet

For Each oCell In oSheet.Range("A:A")
' On Error Resume Next
If oCell.Interior.Color = varColor Then
intCounter = intCounter + 1
End If
Next
Set oSheet = Nothing
Set oCell = Nothing
GetProgress = intCounter
End Function

Public Sub Update()
Dim oSheet As Excel.Worksheet
Dim intCount As Integer
Application.EnableEvents = False
For Each oSheet In Application.Worksheets
If Not oSheet.Name = "Status" Then
Select Case oSheet.Name
Case "JRV"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C3").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D3").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E3").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F3").Value = intCount
Case "ELS"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C4").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D4").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E4").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F4").Value = intCount
Case "LVT"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C5").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D5").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E5").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F5").Value = intCount
Case "LBI"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C6").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D6").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E6").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F6").Value = intCount
Case "RTH"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C7").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D7").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E7").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F7").Value = intCount
Case "SUFI"
' tæller rød
intCount = GetProgress(oSheet, vbRed)
Range("Status!C8").Value = intCount

' tæller gul
intCount = GetProgress(oSheet, vbYellow)
Range("Status!D8").Value = intCount

' tæller blå
intCount = GetProgress(oSheet, vbBlue)
Range("Status!E8").Value = intCount

' tæller grøn
intCount = GetProgress(oSheet, vbGreen)
Range("Status!F8").Value = intCount
End Select
End If
Next
Application.EnableEvents = True
Set oSheet = Nothing
End Sub

Kommentar
Fra : emesen


Dato : 02-11-04 19:56

Ja det er noget af en sag - den vil jeg afprøve i morgen.
Uden at have set den i funktion endnu - så tillykke med den.


Kommentar
Fra : Gigantor


Dato : 02-11-04 20:00

Tak for det.
Jeg er ret stolt over at have lært VBA i Excel på 1 arbejdsdag, nu må vi se om brugerne er lige så glade for min kode som jeg er.

Kommentar
Fra : emesen


Dato : 02-11-04 20:21

Det bør du også være - jeg har kun leget lidt med VB6 men nu vil jeg prøve din kode i morgen.
Jeg går ud fra at den skal ligge i en kommandoknap.

Kommentar
Fra : Gigantor


Dato : 02-11-04 20:34

Jeg har lagt sub'en "Private Sub Worksheet_Change(ByVal Target As Range)" ind i hver ark, ved at åbne visual basic editoren og dobble klikke på hver ark i project explore'en.
Resten af koden ligger i et modul. Public Sub Update() bliver kørt fra en knap i "Status" ark'et. I status ark'et har jeg en struktur du nok kan aflæse fra Update sub'en.
Da jeg var færdig med at udvikle kunne jeg bare eksportere modulet og hive det ind i mit "rigtige" regneark. Lækkert!

Kommentar
Fra : Camillasmoster


Dato : 02-11-04 23:08

Og jeg, som gik og troede, at jeg kunne finde ud af Excel!

Goddaw do!

Dette er skisme teknisk! Men spændende, må jeg sige.

Hvad man dog lærer på KANDU....

MVH
Hanne

Kommentar
Fra : Gigantor


Dato : 02-11-04 23:42

Nu startede jeg ikke på helt bar bund, da jeg kan VBScript (et subset af Visual Basic) og går på et kursus i C# .NET windows programmering (derfor kender jeg noget af termologien). Men ellers var google min ven og jeg fandt alle de eksempler og tutorials jeg skulle bruge. Held og lykke med at google, hvis du våger pelsen.

Kommentar
Fra : emesen


Dato : 02-11-04 23:50

Camillasmoster..........du skal ikke være ked af det - Gigantor er langt lang inde i excel.
Men hvis du vil lege med Visual Basic så er der en god billigbog om emnet.
nemlig "start på Visual Basic 6.0" fra IDG forlag.

Kommentar
Fra : Gigantor


Dato : 02-11-04 23:54

Spørgsmålet er hvornår .NET holder sit indtog i Office og VB6 er forældet.. Tror det sker når Longhorn (den næste version af windows) kommer. Selvfølgelig skifter virksomheder ikke OS bare fordi Microsoft kommer med en ny version.

Kommentar
Fra : emesen


Dato : 03-11-04 00:04

Ja det er vist noget med object orienteret. Og skulle være lidt "nemmere" at holde styr på.

Kommentar
Fra : Gigantor


Dato : 03-11-04 00:50

.NET giver en samlede flade (API) at programmere i mod og er derfor meget meget nemmere end den gamle struktur, hvor der var hundreder af API'er. Version 1.0 af .NET kom for 4 år siden (hvis man tæller Alpha versionen med) og alt hvad der findes i Windows kan laves i .NET (og på Linux via Mono), men det skal installeres først. Longhorn skulle være født med .NET (sandsynligvis med .NET 2.0 - også kaldet Widbey). Med .NET kommer også et nyt sprog, C#, som er designet til .NET. VB6 er slet ikke understøttet i .NET (der er kommet en objekt orienteret version kaldet VB.NET) og bliver af mange allerede set som forældet.
En anden af de helt STORE nyheder er også håndteringen af DLLs (du ved de der irriterende nogle som der altid var fejl i, i win95 og win98), som nu ikke behøver at blive registreret i registreringsdatabasen (kør RegEdit32 for se den). Det skulle gerne sørger for at der ikke komme dumme fejl med forskellige versioner af DLLs i forbindelse med opdateringer og forskellige programmers deling af samme DLLs.

Kommentar
Fra : Camillasmoster


Dato : 03-11-04 02:21

Jeg er skam heller ikke ked af det

Det er virkelig spændende at erfare, den for mig, fagre nye verden indenfor alverdens ting!

Så bliver jeg jo inspireret til at lære noget mere!

Tak for'et!

Godnat to you all!

MVH
Hanne

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste