Hai Tio,
Bagaimana jika tidak menggunakan For each Next ?
Kira-kira bunyinya :
Dim sMsg As String
If Evaluate("=countif(b2:e2,""*Kelas*"")") = 0 Then
sMsg = "- Tidak ada kolom bernama Kelas" & vbCrLf
End If
If Evaluate("=countif(b2:e2,""*Keterangan*"")") = 0 Then
sMsg = sMsg & "- Tidak ada kolom bernama Keterangan" & vbCrLf
End If
If LenB(sMsg) <> 0 Then
MsgBox "Data kurang tepat karena :" & vbCrLf & sMsg, vbExclamation
Else
MsgBox "Data valid.", vbInformation
End If
Jika tetap ingin pakai For Each Next, bisa disusun dengan banyak cara dan
salah satunya adalah :
Dim rng As Range
Dim vKolom As Variant
Dim bNotFound As Boolean
Dim sMsg As String
sMsg = vbNullString
For Each vKolom In Array("Kelas", "Keterangan")
bNotFound = True
For Each rng In Range("b2:e2")
If InStr(LCase$(rng.Value), LCase$(vKolom)) <> 0 Then
bNotFound = False
Exit For
End If
Next rng
If bNotFound Then
sMsg = sMsg & "- Tidak ada kolom bernama " & vKolom & vbCrLf
End If
Next vKolom
If LenB(sMsg) <> 0 Then
MsgBox "Data tidak valid karena :" & vbCrLf & sMsg, vbExclamation
Else
MsgBox "Data valid.", vbInformation
End If
Selain kedua cara diatas, masih ada banyak cara lain, seperti penggunaan
methods find maupun worksheet function countif.
Memanfaatkan cell bantu berformula juga bisa.
Wassalam,
Kid.
2013/2/15 <[email protected]>
> **
>
>
>
>
> Dear Be-Exceller,
>
> Saya punya 4 kolom yang isinya Nama , Kelas, Umur, dan Keterangan. Saya
> ingin ada button untuk mengecek apakah nama cell dari ke2 kolom dari ke-4
> kolom itu isinya adalah benar yaitu yang
>
> isi cellnya adalah Kelas dan Keterangan. Saya coba pakai For Each..Next,
> tapi gak berhasil. Karena kadang User tidak menulis nama cell secara benar
> yaitu yang isinya Kelas dan Keterangan.
>
> Kalau tidak ada cell yang isinya Kelas maka msgbox "Tidak ada cell yang
> bernama Kelas", dan juga kalau tidak ada cell yang isinya Keterangan maka
> ada msgbox "Tidak ada cell yang bernama
>
> Keterangan".
>
> Ini picturenya :
>
>
>
>
> Terima kasih,
> Wassalam,
> Tio
>
>
<<image/gif>>

