13. november 2001 - 09:21Der er
17 kommentarer og 1 løsning
Ændringer af et to dimensionalt områdei vba
Jeg har som sagt et to dimensionalt område i vab, mit problem er bare, at alt data slettes når jeg bruger ReDim jeg medsender lige en kodestump for bedere beskrivelse!!
With ListView2.ListItems.Add(, , moDragItem1) End With
Listnr = TextBox1.Text For i = 0 To ListView2.ListItems.Count ReDim MyMatrix(Listnr, i) MyMatrix(Listnr, i) = moDragItem1 Next i
End Sub
Private Sub Commandbutton1_Click() ListView2.ListItems.Clear Listnr = TextBox1.Text For i = 0 To UBound(MyMatrix, 2) With ListView2.ListItems.Add(, , MyMatrix(Listnr, i)) End With Next i End Sub ???? et problem jeg er ret træt af!, hvis jeg opretter er område på (100,100) er mine problemer for så vidt løst... men alligevel..
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
prøv at flytte dim redim ud af løkken: listnr=textbox1.text antal=listview2.ListItem.count redim MyMatrix(listnr, Antal) for i = 0 to Antal MyMatrix(listnr, i)=moDragItem1 next i
Ja, men du kan godt ændre den sidste dimention med Redim Preserve
Alternativt er at smide indeholdet at MyMatrix over i et midlertidigt matrix - Redim MyMatrix(listnr, listview2.ListItem.count), og så smide data tilbage.
Ja det er muligt, at ændre den sidste dimension, mit problem(står ikke i koden) er, at jeg ændre i 8 rækker åp en gang Listnr1, listnr2, list...... mit problem er som sagt løst med MyMatrix(100,100), her kan jeg frit skrive og hente data uden problemer(indtil min matrix overskrider 100,100) Hvorfor SKAL msva slette mine data, hvis jeg bruger ReDim????? Den som svare får point!!!! Det bliver totalt umuligt, at finde rundt i to matriser at denne størrelse på samme tid..... har jeg ret???
ja, det har du ret i. Jeg synes nu også, at du skal forsøge BAK\'s forslag, med mindre der allerede er data i inden du skal gøre din ForNext løkke, så hjælper den ikke.
Listnr = TextBox1.Text Rownr = 0 For i = 0 To 100 If MyMatrix(Listnr, i) <> \"\" Then With ListView2.ListItems.Add(, , MyMatrix(Listnr, i), 1, 1) .SubItems(1) = MyMatrix(Listnr + 1, i) .SubItems(2) = MyMatrix(Listnr + 2, i) .SubItems(3) = MyMatrix(Listnr + 3, i) .SubItems(4) = MyMatrix(Listnr + 4, i) End With End If Next i End Sub
Virker som sagt indtil (100,100) overskrides ØV
IDE:
MyMatrix(1000,1000) osv osv..... = dum løsning jeg lader dog spørgsmålet forblive åbent en tid
Her er et svar fra en australier: You can\'t redim preserve a matrix except in its last dimension. Why probably is because of the way Excel stores the array. Alan Beban has written the code to do it in his utilities. Otherwise, you would need to create a new array and transfer the data.
Another approach would be to have a single dimension array and use your own logic to manage it as a two dimensional array - that might give you some insight as to why you can\'t redim preserve the first dimension.
------------------------------ Det kan med andre ord ikke lade sig gøre, men som han skriver, så kan du køre to sideløbende et-dimensioners array\'s, som du så selv skal holde lidt styr på.
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.