begini kah, pak Boss ??
' keempat variable ini di-declares di level modul
' agar berlaku di semua prosedur dlm modul ybs (userform1 module)
Dim ArrTop()
dim ArrLef()
Dim vCheck As Integer
Dim vCheck As Integer
Dim hCheck As Integer
Private Sub ShowHide_TextBox(ChkVal As Boolean)
' siti Vi / 11 april 2010
' prosedur utama / show/hide textboxes
' prosedur ini dijalankan otomatis setiap ada checkbox di klik
Dim oCtr As Control
Dim nTop As Integer
Dim nLef As Integer
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then oCtr.Visible = 0
Next
' siti Vi / 11 april 2010
' prosedur utama / show/hide textboxes
' prosedur ini dijalankan otomatis setiap ada checkbox di klik
Dim oCtr As Control
Dim nTop As Integer
Dim nLef As Integer
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then oCtr.Visible = 0
Next
Call CheckBoxTopLeftList
If vCheck = 0 And hCheck = 0 Then Exit Sub
' ada 3 cara show/hide, tergantung nilai vCheck dan hCheck
' --1-- hanya menampakkan TxtBox yg nilai TOP nya
' ada di daftar ArrTOP
If vCheck > 0 And hCheck = 0 Then
For nTop = 1 To vCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
End If
Next
Next
End If
' --2-- hanya menampakkan TxtBox yg nilai LEFT nya
' ada di daftar ArrLEF
If vCheck = 0 And hCheck > 0 Then
For nLef = 1 To hCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Left = ArrLef(nLef) Then oCtr.Visible = True
End If
Next
Next
End If
' --3-- hanya menampakkan TextBox yg nilai LEFT dan TOP nya
' saat itu ada di dlm daftar (array) ArrLEF dan ArrTOP
If vCheck > 0 And hCheck > 0 Then
For nTop = 1 To vCheck
For nLef = 1 To hCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Left = ArrLef(nLef) Then
If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
End If
End If
Next
Next
Next
End If
If vCheck = 0 And hCheck = 0 Then Exit Sub
' ada 3 cara show/hide, tergantung nilai vCheck dan hCheck
' --1-- hanya menampakkan TxtBox yg nilai TOP nya
' ada di daftar ArrTOP
If vCheck > 0 And hCheck = 0 Then
For nTop = 1 To vCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
End If
Next
Next
End If
' --2-- hanya menampakkan TxtBox yg nilai LEFT nya
' ada di daftar ArrLEF
If vCheck = 0 And hCheck > 0 Then
For nLef = 1 To hCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Left = ArrLef(nLef) Then oCtr.Visible = True
End If
Next
Next
End If
' --3-- hanya menampakkan TextBox yg nilai LEFT dan TOP nya
' saat itu ada di dlm daftar (array) ArrLEF dan ArrTOP
If vCheck > 0 And hCheck > 0 Then
For nTop = 1 To vCheck
For nLef = 1 To hCheck
For Each oCtr In Me.Controls
If InStr(1, LCase(oCtr.Name), "text") > 0 Then
If oCtr.Left = ArrLef(nLef) Then
If oCtr.Top = ArrTop(nTop) Then oCtr.Visible = True
End If
End If
Next
Next
Next
End If
End Sub
Private Sub CheckBoxTopLeftList()
' siti Vi / 11 april 2010
' membuat daftar dinamis mengenai
' checkbox yg dicontreng & nilai Top & LEFT nya
' prosedur ini dipanggil oleh prosedur Show_Hide...
Dim oCheck As Control, p As Integer, q As Integer
' 4 variable di bawah ini akan digunakan oleh prosedur utama
' untuk mengatur show/hide Textbox
ReDim ArrTop(0 To 0) 'daftar nilai TOP ChkBox KIRI yg dicontreng
ReDim ArrLef(0 To 0) 'daftar nilai LEFT ChkBox ATAS yg dicontreng
vCheck = 0 'banyaknya ChkBox bag.KIRI yg dicontreng saat itu
hCheck = 0 'banyaknya ChkBox bag.ATAS yg dicontreng saat itu
For Each oCheck In Me.Controls
' Jika NAMA object control mengandung "chk"...
' (= berarti obj dari class CheckBox...)
If InStr(1, LCase(oCheck.Name), "chk") > 0 Then
' Jika kondisinya dlm keadaan dicontreng...
If oCheck.Value = True Then
oCheck.BackStyle = 1
' Jika yg dicontreng = ChkBox KIRI...
If oCheck.Left < 20 Then
p = p + 1
ReDim Preserve ArrTop(0 To p)
ArrTop(p) = oCheck.Top
vCheck = UBound(ArrTop)
End If
' Jika yg dicontreng = ChkBox ATAS...
If oCheck.Top < 40 Then
q = q + 1
ReDim Preserve ArrLef(0 To q)
ArrLef(q) = oCheck.Left
hCheck = UBound(ArrLef)
End If
Else
oCheck.BackStyle = 0
End If
End If
Next oCheck
End Sub
'-----------------
note:
in case anda tidak dapat melihat UserFormModule DAN anda memerlukannya
coding lengkap akan dikirimkan kpd anda, at request.../japri..
-ctv-
----- Original Message -----From: HerrSoeSent: Sunday, April 11, 2010 12:41 PMSubject: ]] XL-mania [[ Userform & TextBox dlm konfigurasi matrixSi boss lagi belajar excel dan rupanya tertarik dgn userform & vba programming-nya.Dia sudah membuat userform penuh dengan textbox dlm konfigurasi matrik.Setelah dirapihkan 'dikit; kira kira penampakannya seperti ini
CheckBoxA CheckBoxB CheckBoxC CheckBoxD CheckBoxE CheckBoxF CheckBox1 CheckBox2 CheckBox3 CheckBox4 CheckBox5 CheckBox6 CheckBox7 CheckBox8 Dia ingin:ketika userform dipanggil:semua Textbox harus tidak nampakyg boleh nampak hanya CheckBoxJika CheckBox di-checked (dicontreng)**kalau CheckBoxnya dari grup yg berada di Atas (warna biru) SAJAmaka sekelompok ("sekolom") TextBox yg berada tepat di bawahya harus nampak.**kalau CheckBoxnya dari grup yg berada di KIRI (warna coklat muda) SAJAmaka sekelompok ("sebaris") TextBox yg berada tepat di samping kanannya harus nampak**kalau CheckBoxnya dari grup yg berada di KIRI DAN juga ada dari grup ATAS;
maka TextBox yg boleh nampak hanyaTextBox yg di atas nya ada CheckBox yg dicotreng
dan di KIRI nya ada CheckBox yg dicontreng
CheckBoxA contreng CheckBoxC contreng contreng CheckBoxF CheckBox1 contreng CheckBox3 CheckBox4 CheckBox5 contreng CheckBox7 CheckBox8 Mohon bantuan bagaimana codingnya ??terlampir workbook yg sudah berisi userform tetapi belum ada prosedur untuk mengatur perilakuTextBox seperti yg di minta si boss...terima kasih.
Nenhum comentário:
Postar um comentário