Avatar billede region Nybegynder
19. juli 2002 - 09:57 Der er 17 kommentarer og
1 løsning

HASTER.... VBA i Excel

Ve dkørsel af en lille macro på et stort Excel ark går der ged et eller andet sted i scriptet. Hvordan kan jeg i min debugger se hvilken celle den er stoppet ved.?
19. juli 2002 - 10:05 #1
smid lige koden herind
Avatar billede b_hansen Novice
19. juli 2002 - 10:12 #2
det er lidt svært at vurdere, når du ikke oplyser, hvad makroen gør....
Avatar billede region Nybegynder
19. juli 2002 - 10:20 #3
Det macroen gør er at erstatte et tal efterfuldt af et minus til et negativt tal.

eks.

76-
bliver ændret til
-76

Her er koden( + lidt mere )

    Cells.Select
    Selection.Replace What:="*name*", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
    Range("A1").Select
   
    Dim xrange As Range
Set xrange = ActiveSheet.UsedRange
For Each c In xrange
  If Right(c, 1) = "-" Then c.Value = Val(c) * -1
Next

End Sub
Avatar billede lrp Nybegynder
19. juli 2002 - 10:23 #4
Hvis række- og kolonnenumre styres af variable, kan du prøve at holde musen hen over variabelnavnene - så vises de aktuelle værdier (altså umiddelbart før makroen gik i stå) i en lille gul label.

Hvis du vil have et mere konkret svar, så er vi nødt til at se din makro.
Avatar billede region Nybegynder
19. juli 2002 - 10:24 #5
Når jeg starter Macroen suser den afsted i måske 7 sek hvorefter den kommer med en debug. Men den kan jo på disse 7 sek have taget adskillige poster, hvorfor jeg gerne konkret vil vide hvilken celle den ikke forstår.
19. juli 2002 - 10:27 #6
Tryk Ctrl+G så du får debuggeren frem. Her kan du f.eks. skrive
? C.Address (og trykke enter)
Avatar billede b_hansen Novice
19. juli 2002 - 10:28 #7
det kunne tyde på, at du har en celle, der er formateret forkert
Avatar billede b_hansen Novice
19. juli 2002 - 10:30 #8
du kan eventuelt lave en kontrolkolonne, hvor du laver en lille test:
=Hvis(er.tal(celle);"";"FEJL")
19. juli 2002 - 10:31 #9
Du kunne også prøve at ændre VAL til CDBL
If Right(c.Value, 1) = "-" Then c.Value = CDbl(c.Value) * - 1
Avatar billede region Nybegynder
19. juli 2002 - 10:36 #10
Tryk Ctrl+G så du får debuggeren frem. Her kan du f.eks. skrive
? C.Address (og trykke enter)

denne resulterer
? C.Address
$E$3

vil det sige at det er kolonne E celle 3 ?
fordi heri står der =-SIDSTE ÅR hvilket macroen ikke skulle behandle da dette ikke er forudsat i regelsættet i macroen
19. juli 2002 - 10:42 #11
Yep
Avatar billede region Nybegynder
19. juli 2002 - 10:42 #12
b_hansen :
Jeg skal lige for en god ordens skyld sige at arket ligeledes indeholder tekst og derfor kan jeg ikke bruge testen til noget.

Macroen burde vel også være ligeglad med formatteringen idet den bare tager en celle og såfremt det sidste tegn i denne celle er '-' laver den cellen om. Jeg ved godt at man ikke kan gange med en tekst såsom 'blå' men det har virket ved et tidligere ark af lign. karakter.
19. juli 2002 - 10:43 #13
Du kunne ændre din If-sætning, så du checker på, om celle indholdet er en værdi!
For Each c In xrange
  If IsNumeric(c.Value) Then
    c.Value = Val(c) * -1
  End If
Next
19. juli 2002 - 10:46 #14
Jeg ville selv have skrevet det således:
Dim rCell As Range
For Each rCell In ActiveSheet.UsedRange
  With rCell
    If IsNumeric(.Value) Then
      .Value = .Value * - 1
    End If
  End With
Next rCell
19. juli 2002 - 10:50 #15
Det er sku(ups) ikke sikkert IsNumeric virker!
Avatar billede region Nybegynder
19. juli 2002 - 10:51 #16
flemmingdahl's bud må være det bedste jegkan bruge til noget
takker alle som har budt.
Avatar billede bak Seniormester
19. juli 2002 - 10:58 #17
Jeg tror nok jeg ville kombinere dem lidt, for flemmings ide er god, men den ændrer fortegnet. :-)

Dim xrange As Range
Dim c As Range
Set xrange = ActiveSheet.UsedRange
For Each c In xrange
  If IsNumeric(c.Value) And Right(c, 1) = "-" Then c.Value = Val(c) * -1
Next
19. juli 2002 - 11:04 #18
du har ret bak :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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