praegune kellaaeg 19.06.2025 00:40:03
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
wrx123
HV kasutaja
liitunud: 21.03.2006
|
09.07.2009 14:08:47
Probleem VBA-ga |
|
|
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 |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
10.07.2009 11:10:20
|
|
|
Kust saab RowCount oma väärtuse?
|
|
Kommentaarid: 56 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
54 |
|
tagasi üles |
|
 |
wrx123
HV kasutaja
liitunud: 21.03.2006
|
10.07.2009 20:11:48
|
|
|
Ü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 |
|
 |
Le Inc
HV Guru

liitunud: 06.09.2002
|
13.07.2009 10:00:52
|
|
|
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 |
|
 |
|
lisa lemmikuks |
|
|
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.
|