/ Forside / Teknologi / Administrative / MS-Office / Nyhedsindlæg
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 2k3 -
Fra : Mike Johnson


Dato : 11-11-05 22:03

Hej

Er der nogen som kan hjælpe med et lille projekt.

Jeg ønsker at tælle op hvor mange celler som har fx. blå skriftfarve.

Fx. i cellerne A2..A10 står noget text (noget med blå skrift og noget
med sort skrift). I celle A11 skal der så stå hvor mange af disse som
er skrevet med blå farve (fx. i %).

Der skal vel involveres noget VBA. Men ville det være en ide at lave
en funktion som kalder vba koden (som kaldes fra celle A11) ?

Alle forslag er velkomne også om der er en lettere metode.

På forhånd tak.

MJ

 
 
Jørgen Bondesen (12-11-2005)
Kommentar
Fra : Jørgen Bondesen


Dato : 12-11-05 00:59

Hej Mike

Option Explicit

'Placed in Sheet
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Joergen Bondesen, 20051111

Dim rrange As Range
Set rrange = Range("A2:A10")

Dim isect As Variant
Set isect = Application.Intersect(Target, rrange)
If isect Is Nothing Then End

Dim cell As Range
For Each cell In rrange
Dim count As Long
If cell.Font.ColorIndex = 5 Then _
count = count + 1
Next cell

Range("A11").Value = count

Set rrange = Nothing
End Sub


--
Med venlig hilsen
Jørgen Bondesen



Jørgen Bondesen (12-11-2005)
Kommentar
Fra : Jørgen Bondesen


Dato : 12-11-05 01:06

Hej Mike

Her er en opdateret version.
En blå celle skal være med data for at tælle med.

Option Explicit

'Placed in Sheet
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Joergen Bondesen, 20051111

Dim rrange As Range
Set rrange = Range("A2:A11")

Dim isect As Variant
Set isect = Application.Intersect(Target, rrange)
If isect Is Nothing Then End

Dim cell As Range
For Each cell In rrange.Resize(rrange.Rows.count - 1, 1)
Dim count As Long
If cell.Font.ColorIndex = 5 And _
cell.Value <> vbNullString Then _
count = count + 1
Next cell

Range("A11").Value = count

Set rrange = Nothing
End Sub


--
Med venlig hilsen
Jørgen Bondesen



Mike Johnson (12-11-2005)
Kommentar
Fra : Mike Johnson


Dato : 12-11-05 08:29

Hej

Tak for din tilbagemelding, jeg har dog lige et par ting:

1. Hvad er forskellen på at ligge koden i selve sheetet kontra at
ligge den under modules ?

2. Hvorledes køres makroen ?

3. Kan du anbefale nogle VBA bøger ?

4. Hvorledes kan man lave en makro om til en (slags indbygget)
funktion som man evt. sætter i en celle ? Fx. hvis man har lignende
kollonner (b2:b11) osv. som man bare kalder i fra den respektive celle
12 i hver kollonne (evt. med parametren a2:a11 / b2:b11 ....). Håber
at du forstå

På forhånd tak

MJ

On Sat, 12 Nov 2005 01:06:27 +0100, "Jørgen Bondesen"
<bondesen@cool.dk> wrote:

>Hej Mike
>
>Her er en opdateret version.
>En blå celle skal være med data for at tælle med.
>
>Option Explicit
>
>'Placed in Sheet
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>'Joergen Bondesen, 20051111
>
> Dim rrange As Range
> Set rrange = Range("A2:A11")
>
> Dim isect As Variant
> Set isect = Application.Intersect(Target, rrange)
> If isect Is Nothing Then End
>
> Dim cell As Range
> For Each cell In rrange.Resize(rrange.Rows.count - 1, 1)
> Dim count As Long
> If cell.Font.ColorIndex = 5 And _
> cell.Value <> vbNullString Then _
> count = count + 1
> Next cell
>
> Range("A11").Value = count
>
> Set rrange = Nothing
>End Sub

Jørgen Bondesen (12-11-2005)
Kommentar
Fra : Jørgen Bondesen


Dato : 12-11-05 11:52

Hej Mike


ad1) For dig og mig er der 3 steder, vi har vores makroer.


ThisWorkbook hvor makroen styres af en Event (hændelse).
Feks når Workbook_BeforeClose eller Workbook_Open
Aktiver Thisworkbook og du får codewindow til højre.
Øverst har du 2 små felter. Til venstre kan du vælge
Workbook og til højre Events.


Sheet hvor makroen styres af en Event (hændelse).
Feks når Worksheet_SelectionChange dvs. cellemarkeringen
flyttes.
Aktiver Sheet og du får codewindow til højre.
Øverst har du 2 små felter. Til venstre kan du vælge Sheet
og til højre Events.

Hvis Event IKKE virker skyldes det som regel, at Events er
deaktiveret.
Kør denne i Immediate window eller som en makro:
Application.EnableEvents=True

I Module har du de makroer der køres via en knap, men også de
Events som har "fælles" makroer. Functions er ligeledes her.


Ad2) ThisWorkbook og Sheets sker via Event (beskrevet ovenover)
Module via "knap" eller Event.


Ad3) (LeoH har en liste)
Følg med i NG: dk.edb.regneark, her kan du komme meget langt.

Lån bøger på biblioteket, du kan tidsnok købe.

Du kan evt. abonnere gratis på:

http://exceltips.vitalnews.com/


Et par gode links er:

http://www.tushar-mehta.com/excel/vba/index.htm

http://www.dicks-blog.com/

http://www.erlandsendata.no/index.php

http://www.cpearson.com/excel.htm

http://j-walk.com/ss/

http://www.rondebruin.nl/index.html

http://www.mvps.org/links.html#Excel

10 lessons: http://www.excel-vba.com/excel-vba-contents.htm

Lessons: http://www.anthony-vba.kefra.com/index.htm

'Et par hjælpeprogrammer
http://www.appspro.com/Utilities/Utilities.htm
http://www.asap-utilities.com/
http://www.rondebruin.nl/Google.htm


ad4) Function:

Option Explicit


'----------------------------------------------------------
' Procedure : CountBlueFont
' Date : 20051112
' Author : Joergen Bondesen
' Purpose : Count number of fill in cells with fontcolour
' blue in selected range.
' Note : Bluecolour = 5
'----------------------------------------------------------
'
Function CountBlueFont(Target As Range) As Long
Dim cell As Range
For Each cell In Target
Dim count As Long
If cell.Font.ColorIndex = 5 And _
cell.Value <> vbNullString Then _
count = count + 1
Next cell

CountBlueFont = count
End Function


--
Med venlig hilsen
Jørgen Bondesen



Mike Johnson (12-11-2005)
Kommentar
Fra : Mike Johnson


Dato : 12-11-05 16:49

Hej

Jeg kigger det lige igennem

Igen, mange tak

MJ

On Sat, 12 Nov 2005 11:52:27 +0100, "Jørgen Bondesen"
<bondesen@cool.dk> wrote:

>Hej Mike
>
>
>ad1) For dig og mig er der 3 steder, vi har vores makroer.
>
>
>ThisWorkbook hvor makroen styres af en Event (hændelse).
>Feks når Workbook_BeforeClose eller Workbook_Open
>Aktiver Thisworkbook og du får codewindow til højre.
>Øverst har du 2 små felter. Til venstre kan du vælge
>Workbook og til højre Events.
>
>
>Sheet hvor makroen styres af en Event (hændelse).
>Feks når Worksheet_SelectionChange dvs. cellemarkeringen
>flyttes.
>Aktiver Sheet og du får codewindow til højre.
>Øverst har du 2 små felter. Til venstre kan du vælge Sheet
>og til højre Events.
>
>Hvis Event IKKE virker skyldes det som regel, at Events er
>deaktiveret.
>Kør denne i Immediate window eller som en makro:
>Application.EnableEvents=True
>
>I Module har du de makroer der køres via en knap, men også de
>Events som har "fælles" makroer. Functions er ligeledes her.
>
>
>Ad2) ThisWorkbook og Sheets sker via Event (beskrevet ovenover)
>Module via "knap" eller Event.
>
>
>Ad3) (LeoH har en liste)
>Følg med i NG: dk.edb.regneark, her kan du komme meget langt.
>
>Lån bøger på biblioteket, du kan tidsnok købe.
>
>Du kan evt. abonnere gratis på:
>
>http://exceltips.vitalnews.com/
>
>
>Et par gode links er:
>
>http://www.tushar-mehta.com/excel/vba/index.htm
>
>http://www.dicks-blog.com/
>
>http://www.erlandsendata.no/index.php
>
>http://www.cpearson.com/excel.htm
>
>http://j-walk.com/ss/
>
>http://www.rondebruin.nl/index.html
>
>http://www.mvps.org/links.html#Excel
>
>10 lessons: http://www.excel-vba.com/excel-vba-contents.htm
>
>Lessons: http://www.anthony-vba.kefra.com/index.htm
>
>'Et par hjælpeprogrammer
>http://www.appspro.com/Utilities/Utilities.htm
>http://www.asap-utilities.com/
>http://www.rondebruin.nl/Google.htm
>
>
>ad4) Function:
>
>Option Explicit
>
>
>'----------------------------------------------------------
>' Procedure : CountBlueFont
>' Date : 20051112
>' Author : Joergen Bondesen
>' Purpose : Count number of fill in cells with fontcolour
>' blue in selected range.
>' Note : Bluecolour = 5
>'----------------------------------------------------------
>'
>Function CountBlueFont(Target As Range) As Long
> Dim cell As Range
> For Each cell In Target
> Dim count As Long
> If cell.Font.ColorIndex = 5 And _
> cell.Value <> vbNullString Then _
> count = count + 1
> Next cell
>
> CountBlueFont = count
>End Function
>
>
>--
>Med venlig hilsen
>Jørgen Bondesen
>

Mike Johnson (13-11-2005)
Kommentar
Fra : Mike Johnson


Dato : 13-11-05 07:33

Hej igen

Jeg har lidt svært ved at få den til at køre automatisk.

Er der en måde hvorpå at funktionen kan køre på lige fod med alle de
andre interne funktioner ?

Det hjelper ikke at trykke F9 (og desuden er den automatiske beregning
allerede sat til).

I øjeblikket ligger den i sheets, men dette får den ikke til at starte
automatisk, men mindre at jeg gå ind i de(n) celle(r) hvor funktionen
er og trykker F2 og dernæst trykker på enter.

På forhånd tak

MJ

On Sat, 12 Nov 2005 11:52:27 +0100, "Jørgen Bondesen"
<bondesen@cool.dk> wrote:

>Hej Mike
>
>
>ad1) For dig og mig er der 3 steder, vi har vores makroer.
>
>
>ThisWorkbook hvor makroen styres af en Event (hændelse).
>Feks når Workbook_BeforeClose eller Workbook_Open
>Aktiver Thisworkbook og du får codewindow til højre.
>Øverst har du 2 små felter. Til venstre kan du vælge
>Workbook og til højre Events.
>
>
>Sheet hvor makroen styres af en Event (hændelse).
>Feks når Worksheet_SelectionChange dvs. cellemarkeringen
>flyttes.
>Aktiver Sheet og du får codewindow til højre.
>Øverst har du 2 små felter. Til venstre kan du vælge Sheet
>og til højre Events.
>
>Hvis Event IKKE virker skyldes det som regel, at Events er
>deaktiveret.
>Kør denne i Immediate window eller som en makro:
>Application.EnableEvents=True
>
>I Module har du de makroer der køres via en knap, men også de
>Events som har "fælles" makroer. Functions er ligeledes her.
>
>
>Ad2) ThisWorkbook og Sheets sker via Event (beskrevet ovenover)
>Module via "knap" eller Event.
>
>
>Ad3) (LeoH har en liste)
>Følg med i NG: dk.edb.regneark, her kan du komme meget langt.
>
>Lån bøger på biblioteket, du kan tidsnok købe.
>
>Du kan evt. abonnere gratis på:
>
>http://exceltips.vitalnews.com/
>
>
>Et par gode links er:
>
>http://www.tushar-mehta.com/excel/vba/index.htm
>
>http://www.dicks-blog.com/
>
>http://www.erlandsendata.no/index.php
>
>http://www.cpearson.com/excel.htm
>
>http://j-walk.com/ss/
>
>http://www.rondebruin.nl/index.html
>
>http://www.mvps.org/links.html#Excel
>
>10 lessons: http://www.excel-vba.com/excel-vba-contents.htm
>
>Lessons: http://www.anthony-vba.kefra.com/index.htm
>
>'Et par hjælpeprogrammer
>http://www.appspro.com/Utilities/Utilities.htm
>http://www.asap-utilities.com/
>http://www.rondebruin.nl/Google.htm
>
>
>ad4) Function:
>
>Option Explicit
>
>
>'----------------------------------------------------------
>' Procedure : CountBlueFont
>' Date : 20051112
>' Author : Joergen Bondesen
>' Purpose : Count number of fill in cells with fontcolour
>' blue in selected range.
>' Note : Bluecolour = 5
>'----------------------------------------------------------
>'
>Function CountBlueFont(Target As Range) As Long
> Dim cell As Range
> For Each cell In Target
> Dim count As Long
> If cell.Font.ColorIndex = 5 And _
> cell.Value <> vbNullString Then _
> count = count + 1
> Next cell
>
> CountBlueFont = count
>End Function

Jørgen Bondesen (13-11-2005)
Kommentar
Fra : Jørgen Bondesen


Dato : 13-11-05 09:47

Hej Mike

Vi taler om: Function CountBlueFont(Target As Range) As Long

Denne function med det hele er plaseret i et Module.

Man kalder det også en UDF = User designed Function

Der er 2 måder. Den første kan godt drille lidt. Om det lige er mig der har
en fejl 40, vides ikke.
1. =CountBlueFont() og i parentesen skal du have dit område B2:B10
eller hvad det nu er.

2: Marker cellen - Menu: Insæt - Funktion - Kategori: Brugerdefineret -
Function: CountBlueFont - OK - Vælg område - ok.

Da 1. drillede markerede jeg cellen og tastede F2 (rediger) og Enter.

Jeg bruger Excel 2003 UK, så oversættelse kan være mangelfuld.
--
Med venlig hilsen
Jørgen Bondesen



Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408843
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste