Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Probleem VBA-ga märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
wrx123
HV kasutaja

liitunud: 21.03.2006



Autoriseeritud ID-kaardiga

sõnum 09.07.2009 14:08:47 Probleem VBA-ga vasta tsitaadiga

Teen ühte macrot exceli jaoks ja tekkis arusaamatu probleem if lausega.
Viga selles, et peale if tingimust täidab ainult esimese rea ja kaks ülejäänut jäävad puutumata.
If range1.Cells(2 * range1ColCount + range1ColCount * (i - 1)) > rangeTul.Cells(j + rangeTulColCount * (j - 1) + 2) Then
    rangeTul.Cells(j + rangeTulColCount * (j - 1) + 2) = range1.Cells(2 * range1ColCount + range1ColCount * (i - 1))
    counter1 = counter1 + 1
    MsgBox "i = " & i & " counter1 = " & counter1 & ""
End If

Ma tean kindlalt, et programmi töös saab see tingimus mitu korda täidetud, aga counter ei suurene ja msgbox-i ei ilmu kordagi. Ehk keegi märkab mingit viga, mida minu silm ei näe.


terve sub:
Sub Vordlus(RowCount, RowCountTul, range1, rangeTul, range1ColCount, rangeTulColCount)
Dim i, j, counter1 As Integer
counter1 = 0

For i = 1 To RowCount   'liigub edasi sisestatavate andmete lahtrites
     For j = 1 To RowCountTul   'liigub edasi edetabeli lahtrites
            If j = 1 Then
                 If range1.Cells(range1ColCount + range1ColCount * (i - 1) + 2) = rangeTul.Cells(j + rangeTulColCount * (j - 1) + 1) Then
                       If range1.Cells(range1ColCount + range1ColCount * (i - 1) + 1) = rangeTul.Cells(j + rangeTulColCount * (j - 1)) Then
                            If range1.Cells(2 * range1ColCount + range1ColCount * (i - 1)) > rangeTul.Cells(j + rangeTulColCount * (j - 1) + 2) Then
                                 rangeTul.Cells(j + rangeTulColCount * (j - 1) + 2) = range1.Cells(2 * range1ColCount + range1ColCount * (i - 1))
                                 counter1 = counter1 + 1
                                 MsgBox "i = " & i & " counter1 = " & counter1 & ""
                             End If
                       End If
                 End If
            Else
                 If range1.Cells(range1ColCount + range1ColCount * (i - 1) + 2) = rangeTul.Cells(1 + rangeTulColCount * (j - 1) + 1) Then
                       If range1.Cells(range1ColCount + range1ColCount * (i - 1) + 1) = rangeTul.Cells(1 + rangeTulColCount * (j - 1)) Then
                             If range1.Cells(2 * range1ColCount + range1ColCount * (i - 1)) > rangeTul.Cells(1 + rangeTulColCount * (j - 1) + 2) Then
                                 rangeTul.Cells(1 + rangeTulColCount * (j - 1) + 2) = range1.Cells(2 * range1ColCount + range1ColCount * (i - 1))
                                 counter1 = counter1 + 1
                                 MsgBox "i = " & i & " counter1 = " & counter1 & ""
                             End If
                       End If
                 End If
            End If
     Next j
     
     If counter1 < i Then
        rangeTul.Cells(1).Activate
        ActiveCell.Offset(RowCountTul, 0).Select
        ActiveCell.Value = range1.Cells(range1ColCount + range1ColCount * (i - 1) + 1)
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = range1.Cells(range1ColCount + range1ColCount * (i - 1) + 2)
        ActiveCell.Offset(0, 1).Select
        ActiveCell.Value = range1.Cells(2 * range1ColCount + range1ColCount * (i - 1))
     
        'counter1 = counter1 + 1
     End If
     
Next i

End Sub
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 10.07.2009 11:10:20 vasta tsitaadiga

Kust saab RowCount oma väärtuse?
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
wrx123
HV kasutaja

liitunud: 21.03.2006



Autoriseeritud ID-kaardiga

sõnum 10.07.2009 20:11:48 vasta tsitaadiga

Üks teine funktsioon kutsub vordluse välja ja annab väärtused kaasa.
Sub Vordlus(RowCount, RowCountTul, range1, rangeTul, range1ColCount, rangeTulColCount)
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 13.07.2009 10:00:52 vasta tsitaadiga

Vaata F8 sammhaaval miks ta IF lauset ei täida, võimalik et väärtused mida ta saab on valed. Hiirega peale liikudes näed ka muutujate väärtusi. Üldjuhul arvuti ei eksi .. probleem peab kuskil mujal olema.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Probleem VBA-ga
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.