Avatar billede Slettet bruger
09. august 2001 - 15:42 Der er 19 kommentarer og
1 løsning

HJÆLP, Haster macro programmering

Hælp

Jeg skal hurtigt bruge et simpelt macro program der skal køres i Excel. Programmet skal blot kunne:

Kontrollere første felt i kolonne C. Hvis feltet IKKE er tomt (NULL) gå videre til næste felte i kolonne C, hvis feltet ER tomt så tæl en variable op og gå videre til næste felt i kolonne C.

Når der ikke er flere felter i kolonne C skal variablens værdi vises i en message box.

Venligst Rasmus


Avatar billede jennemaan Nybegynder
09. august 2001 - 15:48 #1
Sub DinHasterMacro()
Dim iRow as Integer

iRow=1

While Range(\"C\" & iRow).Value<>\"\"
  iRow=iRow+1
Wend
Msgbox Range(\"C\" & iRow-1).Value

End Sub


/Jennemaan
Avatar billede Slettet bruger
09. august 2001 - 15:51 #2
Jeg får kun udskrevet værdien af det første C felt!
Avatar billede jennemaan Nybegynder
09. august 2001 - 15:55 #3
Ville du ikke sæge rækkevist i C-kolonnen?
Avatar billede Slettet bruger
09. august 2001 - 15:56 #4
Kort sagt: jeg skal bare finde ud af hvor mange felter i kolonne C der er tomme og have svaret vist i en mesagebox
Avatar billede ditlevsen Nybegynder
09. august 2001 - 16:01 #5
Har du overvejet at bruge funktionen:
COUNTBLANK()
Avatar billede jennemaan Nybegynder
09. august 2001 - 16:02 #6
oooh... nu forstår jeg - jeg læste ikke dit spørgsmål ordenligt.

Sub DinHasterMacro()

Dim iRow As Long
Dim iCount as Long
For iRow=1 To Range(\"a:a\").Rows.count
  If Range(\"C\" & iRow).Value = \"\" Then iCount=iCount+1
Next iRow
Msgbox iCount
End Sub



/Jennemaan
Avatar billede Slettet bruger
09. august 2001 - 16:02 #7
Jeg kender INTET til macroprogrammering! Vis mig venligst HELE rutinen!
Avatar billede jennemaan Nybegynder
09. august 2001 - 16:04 #8
du kunne som ditlevsen foreslår, f.eks. i celle a1 skrive \"=COUNTBLANK(C:C)\"

/Jennemaan
Avatar billede ditlevsen Nybegynder
09. august 2001 - 16:09 #9
COUNTBLANK(C:C) virker ikke men:

definer en celle i regnearket som

=COUNTBLANK(C1:C100)

hvis din celle i regnerarket et D1 ser din macro således ud:

MsgBox Range(\"D1\")


Avatar billede jennemaan Nybegynder
09. august 2001 - 16:10 #10
ditlevsen > Countblank(C:C) Virker da fint?
Avatar billede Slettet bruger
09. august 2001 - 16:11 #11
/Jennemaan

Fint men den tæller ALT hvad den kan have af rækker (65231). Kan man evt finde ud af hvor det sidste udfyldte felt er i kolonne C og så tælle tomme felter fra start og dertil??

F.eks. Jeg har udfyldt felter i kolonne C til række 1049, tæl hvor mange af dem der er tomme??
Avatar billede jennemaan Nybegynder
09. august 2001 - 16:13 #12
ras > hvis fælterne er tomme, hvordan skal den så afgøre hvor mange celler den skal teste på?
Avatar billede Slettet bruger
09. august 2001 - 16:14 #13
Den skal tage det SIDST udfyldte felt (f.eks. felt 1000) og så tælle tomme felter fra start og dertil...
Avatar billede jennemaan Nybegynder
09. august 2001 - 16:15 #14
Antaget at der står noget for HVER række i kolonne B kunne man bruge:

Sub DinHasterMacro()
Dim iRow as Long
Dim iCount As Long
iRow=1

While Range(\"B\" & iRow).Value<>\"\"
  If Range(\"C\" & iRow).Value=\"\" Then iCount=iCount+1
  iRow=iRow+1
Wend
Msgbox iCount

End Sub


/Jennemaan

Avatar billede jennemaan Nybegynder
09. august 2001 - 16:17 #15
Sub DinHasterMacro()

Dim iRow As Long
Dim iCount as Long
Dim itmpCount as Long
For iRow=1 To Range(\"a:a\").Rows.count
  If Range(\"C\" & iRow).Value = \"\" Then itmpCount=itmpCount+1
  Else
  iCount=iCount+itmpCount
  itmpCount=0
  End IF
Next iRow
Msgbox iCount
End Sub
Avatar billede Slettet bruger
09. august 2001 - 16:17 #16
Kan desværre ikke bruges, der er også tomme felter i kolonne B
Avatar billede jennemaan Nybegynder
09. august 2001 - 16:18 #17
Mit sidste svar må kunne bruges ;o)

/Jennemaan
Avatar billede Slettet bruger
09. august 2001 - 16:19 #18
Jeg får fejl: Else without IF

Avatar billede jennemaan Nybegynder
09. august 2001 - 16:19 #19
Altså:

Sub DinHasterMacro()

Dim iRow As Long
Dim iCount as Long
Dim itmpCount as Long
For iRow=1 To Range(\"a:a\").Rows.count
  If Range(\"C\" & iRow).Value = \"\" Then
    itmpCount=itmpCount+1
  Else
    iCount=iCount+itmpCount
  itmpCount=0
  End IF
Next iRow
Msgbox iCount
End Sub

(Manglede lige et linjeskift *G*)

/jennemaan
Avatar billede Slettet bruger
09. august 2001 - 16:22 #20
Takker mange gange...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester