Peringkasan Code:
Masih meneruskan threads : http://tech.groups.yahoo.com/group/XL-mania/message/20136 & 20140
Di dalam Loop For - Next, terdapat strukur If bersarang.
Struktur If dalam (= If yg kedua) sbb:
If r <= N Then
Y = (i - 1) * 10
Else
Y = (i) * 10
End If
masih dapat di-ringkas manjadi 1 baris saja, yaitu:
Y = (i + (r <= N)) * 10
Kita perhatikan expressi (r <= N) menghasilkan type data Boolean (salah satu
dari True / False).
Satu hal kecil boleh dicatat di sini adalah, adanya perbedaan di Worksheet -vs- di VBA
mengenai Nilai sebuah BOOLEAN (logical value) jika dikonversi menjadi Bilangan Integer.
Cara mengkonversi sama dengan cara yg kita kenal di worksheet
- diaritmatikkan dengan bilangan lain, misal dikalikan 1 / dibagi 1, ditambah 0 dst.
dimasukkan ke fungsi Int(r <= N), asal jangan dimasukkan ke fungsi Val
Jika di Worksheet : TRUE adalah = 1, FALSE = 0
di VBA agak lain: True = -1, False = 0
SMS-nya: Janganlah hal kecil ini membuat program kita jadi kacauw... Cuy..
Prosedur yg telah diringkas/ disederhanakan:
Sub Loop_Yang_Tidak_Sulit(MaxStep As Long)
' Rr.Wilis / 26 Mar 2012
' Xl-mania Case Nr: 20136
'------------------------
Dim i As Long, x As Long, Y As Long
Dim N As Long, r As Long, p As Long
N = 3
With Cells(N, 1)
Do While (N + p) < MaxStep
p = p + 1
For i = 1 To (N + p)
r = r + 1
If i = (N + p) Then
Y = 0
Else
Y = (i + (r <= N)) * 10
End If
.Cells(r, 1) = i
.Cells(r, 2) = x
.Cells(r, 4) = Y
If i = (N + p - 1) Then x = Y
Next i
Loop
End With
End Sub
'-------------------------------------
Sebenarnya Struktur IF (yg sekarang tidak lagi bersarang itu) masih dapat diringkas lagi, yaitu
dikonversi menjadi bentuk penulisan FUNGSI Iif
If i = (N + p) Then
Y = 0
Else
Y = (i + (r <= N)) * 10
End If
dapat diubah menjadi hanya spt ini
Y = Iif(i = (N + p), 0, (i + (r <= N)) * 10)
Bentuknya seperti fungsi IF di Worksheet ya ?!
Tetapi, konon, kecepatannya kalah dibanding dengan struktur IF di atasnya
Tulisan tambahan ini bukan ditujukan kepada Pak Puthut (yg tentunya sudah sangat hafal dengan hal2 spt itu);
tetapi tulisan ini ditujukan kepada temans lain yg sedang mulai & bersemangat belajar-VBA-Excel (kalau mau baca..)
Temans2 yg tidak sempat menerima email berlampiran dari milis
masih dapat mengunduh file lampirannya di sini:
Bonus Eksperimen:
Prosedur untuk men-TEST nilai Boolean di VBA
'------------------------
Sub BooleanToInteger()
Dim x As Boolean, y As Integer
x = 2 > 10
y = CInt(x)
MsgBox x & " = " & y
x = 2 < 10
y = CInt(x)
MsgBox x & " = " & y
End Sub
'--------------------------
Wassalam & kind regards,
Rr_Wilis
On Mon, Mar 26, 2012 at 7:05 PM, Rara Wilis <ra2wilis@gmail.com> wrote:
Sub Loop_Yang_Tak_Terlalu_Sulit(MaxStep As Long)' Rr.Wilis / 26 Mar 2012' Xl-mania Case Nr: 20136'--------------------------Dim i As Long, X As Long, Y As LongDim N As Long, r As Long, p As LongN = 3With Cells(3, 1)Do While (N + p) < MaxStepp = p + 1For i = 1 To (N + p)r = r + 1If i = (N + p) ThenY = 0ElseIf r <= N ThenY = (i - 1) * 10ElseY = (i) * 10End IfEnd If.Cells(r, 1) = i.Cells(r, 2) = X.Cells(r, 4) = YIf i = (N + p - 1) Then X = YNext iLoopEnd WithEnd Sub'-----------------------
__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| Delay pada posting disebabkan sibuknya momods dan leletnya |
| koneksi dengan ind***t. bwakakakaka....
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
| Delay pada posting disebabkan sibuknya momods dan leletnya |
| koneksi dengan ind***t. bwakakakaka....
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
.
__,_._,___
Nenhum comentário:
Postar um comentário