Avatar billede dl Nybegynder
27. september 2006 - 14:30 Der er 21 kommentarer og
1 løsning

Loop i Excel

ved ikke om dette er det rigtige sted, men det er jo VB.

Jeg har på mit excel ark, range  A1:A20  markede af.

jeg præver at køre denne kode:

  Range("A5:A20").Select
  Sheets("Ark1").Select
   
    Dim indexCounter As Integer
    Dim columCounter As Integer
   
   
    For indexCounter = 1 To 5
        For columCounter = 1 To 1
       
            Worksheets("Sheet1").Cells(indexCounter, columCounter).Value = "s" 'fejl her

           
        Next columCounter
    Next indexCounter




jeg får en out of range ... og kan bare ikke forstå det.
det er næsten et eksempel taget ud af MS egen hjælp... som bare ikke virke... noget så simpel.



jeg har i mit range, nogle celler med "x" og nogle uden... jeg skal løbe min liste igemmen, og sætte en baggrundsfarve i de celler hvor der er et "x" i.


hvordan kan dette gøres?

//Dennis

Ps. har siddet med det i 2 timer nu ... og jeg kan forstår folk, som ikke kan li microsoft :S
Avatar billede dl Nybegynder
27. september 2006 - 16:46 #1
jeg har også se på denne


For Each c In Worksheets("Sheet1").Range("A1:A4").Cells
        If Abs(c.Value) < 0.01 Then c.Value = 0
    Next

men nej, ... out of range igen.
Avatar billede therichman Nybegynder
27. september 2006 - 17:41 #2
Tror måske problemet ligger i at du skal starte fra 0, altså din første kode skal muligvis se sådan ud:

    For indexCounter = 0 To 4
        columCounter = 0 to 0
     
            Worksheets("Sheet1").Cells(indexCounter, columCounter).Value = "s"
         
        Next columCounter
    Next indexCounter
Avatar billede kabbak Professor
27. september 2006 - 18:08 #3
hvor har du koden, det er vel ikke sådan at du har den i et Ark modul, Kode i ark moduler, virker kun inden for samme ark.

Hvis du har koden under en knap på arket, er det i et arkmodul.

Hvis du skal operere i alle ark, skal koden ligge i et modul for sig selv, eller i ThisWorkbook modulet.
Avatar billede dl Nybegynder
27. september 2006 - 18:51 #4
jeg har koden i en knap, som ligger på det ark, hvor koden skal køre.
og jeg har koden, fra MS hjælp :) har lige prøvet therichman eksempel, og det virker heller ikke ... samme fejl :)

jeg har kun arbejde 2 timer i VB, og hader det :S
Avatar billede kabbak Professor
27. september 2006 - 19:17 #5
I dit spørgsmål skriver du

Sheets("Ark1").Select

længere nede skriver du

Worksheets("Sheet1").Cells(indexCounter, columCounter).Value = "s" 'fejl her

Det er 2 forskellige navne, der skal stå det navn arket har
Avatar billede dl Nybegynder
27. september 2006 - 21:43 #6
ja, det kan jeg se, min fejl ... men


fejl nu:  Application-defined or object-defined error
run-time error: 1004


med denne kode


Private Sub CommandButton1_Click()

  'Range("A5:A20").Select
  'Sheets("Ark1").Select
   
  Dim indexCounter As Integer
  Dim columCounter As Integer
   
   
  For indexCounter = 0 To 5
      For columCounter = 0 To 0
       
          Worksheets("Ark1").Cells(indexCounter, columCounter).Value = columCounter ' fejl her

           
        Next columCounter
    Next indexCounter


'For Each c In Worksheets("Sheet1").Range("A1:A4").Cells
'        If Abs(c.Value) < 0.01 Then c.Value = 0
'    Next


   

End Sub
Avatar billede kabbak Professor
27. september 2006 - 21:46 #7
Der er ikke en kolonne 0 ej keller en række 0.

det skal være

For indexCounter = 1 To 5
      For columCounter = 1 To 1
Avatar billede kabbak Professor
27. september 2006 - 21:46 #8
Men hvorfor den sidste  columCounter , den laver jo ingenting
Avatar billede kabbak Professor
27. september 2006 - 21:49 #9
da den kun skal arbejde i det ark, som koden er på, behøver du ikke at fortælle hvilket ark

det er nok med

Cells(indexCounter, columCounter).Value = columCounter
Avatar billede dl Nybegynder
28. september 2006 - 20:23 #10
ja, men får stadig samme fejl.
Avatar billede kabbak Professor
28. september 2006 - 20:28 #11
jeg har ingen problemer med at køre den.

Send lige et kopi til mig
kabbak snabela tiscali dot dk

så tjekker jeg lige
Avatar billede excelent Ekspert
28. september 2006 - 21:25 #12
Imens kabbak tjekker, kan du prøve denne

Sub FindX()
Dim rk
Sheets("Sheet1").Select
For rk = 1 To 20
If Cells(rk, 1) = "x" Then Cells(rk, 1).Interior.ColorIndex = 3
Next
End Sub
Avatar billede dl Nybegynder
28. september 2006 - 21:26 #13
ja, k  ... skal lige sige jeg køre  excel 2003  :D
Avatar billede excelent Ekspert
28. september 2006 - 21:27 #14
jeg bruger næsten altid 'Cells(række,kolonne)
syntes det er nemmere at overskue

Cells(1,1) svarer til A1
Cells(2,1) svarer til A2 osv.osv

Cells(2,2) svarer til B2...
Avatar billede dl Nybegynder
28. september 2006 - 21:37 #15
excelent >> din kode virker  :)

jeg er glad nu :)

kom med et svar :)


dog lige en tid, kan man få det til at køre bagved, sådan så den selv laver de farve med en ændring, i felterne ?
Avatar billede kabbak Professor
28. september 2006 - 21:43 #16
du havde stadig nuller

Private Sub CommandButton1_Click()

  'Range("A5:A20").Select
  'Sheets("Ark1").Select
   
  Dim indexCounter As Integer
  Dim columCounter As Integer
   
   
  For indexCounter = 1 To 5 ' rettet fra 0 to 5
      For columCounter = 1 To 1' rettet fra 0 to 0
       
          Worksheets("Ark1").Cells(indexCounter, columCounter).Value = columCounter ' fejl her

           
        Next columCounter
    Next indexCounter


'For Each c In Worksheets("Sheet1").Range("A1:A4").Cells
'        If Abs(c.Value) < 0.01 Then c.Value = 0
'    Next


   

End Sub
Avatar billede dl Nybegynder
28. september 2006 - 21:50 #17
ja, nu virker det også ... så må i jo komme med et svar begge 2 :)

fatter bare ikke VB,  Java4ever  :D
Avatar billede kabbak Professor
28. september 2006 - 21:51 #18
et svar ;-))
Avatar billede excelent Ekspert
28. september 2006 - 22:30 #19
var blot en kommentar :-)
Avatar billede excelent Ekspert
28. september 2006 - 22:47 #20
hvis det skal køre automatisk, så indsæt denne kode i arkets kodemodul
højreklik på arkfanen, vælg Vis programkode
indsæt følgende kode i vinduet til højre

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
If Target.Cells = "x" Then Target.Interior.ColorIndex = 3
If Target.Cells <> "x" Then Target.Interior.ColorIndex = xlNone
End Sub
Avatar billede dl Nybegynder
29. september 2006 - 12:36 #21
k, så får kabbak point :)
Avatar billede dl Nybegynder
29. september 2006 - 12:40 #22
men excelent, og andre... det kan da være i kan svar på denne så: http://www.eksperten.dk/spm/735435

da det bare er at farvelægge de celler ved siden af target :)
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