11 Messages
Digest #2820
5a
Bls: [belajar-excel] membuat blok dari data validation????? [1 Attac by "Shenly" shenly_excelmania
Messages
Sat Mar 8, 2014 5:12 am (PST) . Posted by:
"hendrik karnadi" hendrikkarnadi
Dear Be Excellers,
Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2 alternatif program yang nampaknya sama tapi hasilnya berbeda.
Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"),
Sub Hapus_Wks1()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In Worksheets
Sheets("Proses").Range("A1") = wks.Name
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
If Found Then
Else
wks.Delete
End If
End If
Next wks
Application.DisplayAlerts = True
End Sub
Macro2 hanya menyisakan Sheet "Proses",
Sub Hapus_Wks2()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In Worksheets
Sheets("Proses").Range("A1") = wks.Name
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
If Not Found Then wks.Delete 'Found Then
'Else
' wks.Delete
'End If
End If
Next wks
Application.DisplayAlerts = True
End Sub
saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal secara logika manusia keduanya se-olah2 sama,
Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak ditemukan (Else) maka wks.Delete
Macro2: Jika tidak ditemukan maka wks.Delete
Pertanyaannya :
Mengapa hasil kedua macro tsb berbeda ?
File terlampir.
Salam,
HK
Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2 alternatif program yang nampaknya sama tapi hasilnya berbeda.
Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"
Sub Hapus_Wks1()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.
For Each wks In Worksheets
Sheets("
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("
If Found Then
Else
wks.Delete
End If
End If
Next wks
Application.
End Sub
Macro2 hanya menyisakan Sheet "Proses"
Sub Hapus_Wks2()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.
For Each wks In Worksheets
Sheets("
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("
If Not Found Then wks.Delete 'Found Then
'Else
' wks.Delete
'End If
End If
Next wks
Application.
End Sub
saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal secara logika manusia keduanya se-olah2 sama,
Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak ditemukan (Else) maka wks.Delete
Macro2: Jika tidak ditemukan maka wks.Delete
Pertanyaannya :
Mengapa hasil kedua macro tsb berbeda ?
File terlampir.
Salam,
HK
Sat Mar 8, 2014 7:49 am (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Pak Hendrik,
Tentang variabel Variant :
1. Variabel Found tidak dideklarasikan, berarti akan dideklarasikan oleh
VB/VBA dengan tipe Variant (untung tidak ada penegasan Option Explicit,
jadi tanpa deklarasi masih bisa berjalan).
2. Varibel variant akan bernilai empty (bukan Null) ketika tidak terisi
apa-apa dan ketika berisi suatu nilai, maka tipe datanya mengikuti tipe
data yang memungkinkan untuk si nilai.
3. Methods Find akan menghasilkan tipe data Range.
4. Memasukkan sebuah nilai hasil methods Find ke variabel bertipe Variant
seperti Found, ketika tanpa set, maka found akan berisi nilai dari properti
default range hasil methods Find, yaitu nilai dalam properti Value, yang
membuat variabel Found bertipe data selain Object.
5. Methods Find akan menghasilkan Nothing bila tidak menemukan yang dicari,
yang membuat tidak adanya properti default bernama Value, sehingga nilai
dalam variabel Variant bernama Found akan di-set menjadi Empty.
6. Methods Find akan menghasilkan object Range ketika yang di-Find
ditemukan, yang membuat properti default bernama Value menjadi ada dan
memiliki nilai, sehingga nilai dalam variabel Variant bernama Found akan
diisi dengan nilai properti Value milik range hasil methods Find, yaitu
sebuah String berupa nama worksheet yang sedang diproses oleh proses For
Each.
7. Jadi, variabel Found yang pada dasarnya bertipe Variant akan berubah
menjadi Empty atau menjadi bertipe String.
Tentang conditional :
1. conditional dengan IF THEN ELSE akan memeriksa ekspresi kondisi bertipe
numerik maupun boolean (TRUE atau FALSE)
2. nilai numerik 0, boolean FALSE, atau Empty membuat conditional berstatus
FALSE
3. nilai numerik selain 0, boolean TRUE, Not Empty membuat conditional
berstatus TRUE
4. pada baris berbunyi IF Found Then
<A> Ketika Found menyimpan nilai property Value bertipe String dari object
Range hasil methods Find berhasil menemukan range yang dicari, maka baris
IF ini akan menyebabkan error. Berhubung sebelum IF ada baris On Error
Resume Next, maka error di baris IF diabaikan dan masuk ke area baris kode
disisi TRUE milik blok IF. Hasilnya, terkesan bahwa IF Found Then berhasil
mendefinisikan bahwa hasil kondisi adalah TRUE, padahal kenyataannya,
proses pengkondisiannya membuat Error.
<B> Ketika Found berisi Empty yang diakibatkan oleh hasil methods Find
tidak menghasilkan apa-apa (menghasilkan Nothing), maka baris IF ini akan
memeriksa kondisi dengan bunyi IF Empty Then dan tidak menyebabkan error.
Karena nilai Empty setara dengan boolean FALSE, maka blok IF akan mencari
sisi ELSE.
Jadi, hasil kedua prosedur berbeda karena
1. Pada prosedur 2 di bagian ekspresi IF Not Found Then akan menghasilkan
error yang kemudian diabaikan akibat On Error Resume Next atau karena
variabel Found dalam keadaan Empty yang membuat Not Found akan bernilai
TRUE, yang kedua kondisi tersebut membuat baris wks.delete dijalankan.
2. Pada prosedur 1 di bagian ekspresi IF Found Then akan menuju blok FALSE
(mulai ELSE) ketika Found dalam keadaan Empty saja. Sedangkan saat Found
ada isinya bertipe String, maka proses akan memunculkan error yang
diabaikan oleh On Error Resume Next, yang membuat blok IF mengalir ke area
blok TRUE. Karena blok TRUE tidak ada yang akan dikerjakan, maka proses
segera menuju ke akhir blok Conditional.
Sedikit catatan,
Disiplin dalam mendefinisikan variabel dengan memilih tipe data yang sesuai
dengan proses akan jauh lebih menentramkan karena tidak akan muncul hal-hal
yang tidak terduga karena berupa logika dibalik layar.
Misal dengan melakukan hal-hal berikut secara utuh :
1. mendeklarasikan variabel secara jelas dan sesuai tipe datanya sesuai
kebutuhan :
*Dim Found as range*
2. memastikan ada pengabaian error dengan On Error Resume Next sebelum
proses loop (kasus ini menggunakan loop dengan For Each)
3. menambahkan set di depan baris kode proses dengan methods Find
*set *Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
4. mengubah blok conditional (kasus ini dengan blok IF THEN ELSE) menjadi :
IF* found is nothing *Then 'karena methods Find menghasilkan object range
yang akan menghasilkan nothing bila tidak berhasil menemukan
wks.delete
endif
kalo ndak salah sih gitu...
tapi sebaiknya dicoba dulu deh...
Wassalam,
Kid.
On Sat, Mar 8, 2014 at 7:57 PM, hendrik karnadi <hendrikkarnadi@yahoo.com>wrote:
>
>
> Dear Be Excellers,
>
> Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin
> menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2
> alternatif program yang nampaknya sama tapi hasilnya berbeda.
>
> Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"),
> Sub Hapus_Wks1()
> 'HK for ASL (6 Maret 2014)
> Dim wks As Worksheet
> Application.DisplayAlerts = False
>
> For Each wks In Worksheets
> Sheets("Proses").Range("A1") = wks.Name
> On Error Resume Next
> If wks.Name <> "Proses" Then
> Found = Sheets("Proses").Range("A1").Find("Wkr",
> LookAt:=xlPart)
> If Found Then
>
> Else
> wks.Delete
> End If
> End If
> Next wks
>
> Application.DisplayAlerts = True
> End Sub
>
>
> Macro2 hanya menyisakan Sheet "Proses",
> Sub Hapus_Wks2()
> 'HK for ASL (6 Maret 2014)
> Dim wks As Worksheet
> Application.DisplayAlerts = False
>
> For Each wks In Worksheets
> Sheets("Proses").Range("A1") = wks.Name
> On Error Resume Next
> If wks.Name <> "Proses" Then
> Found = Sheets("Proses").Range("A1").Find("Wkr",
> LookAt:=xlPart)
> If Not Found Then wks.Delete 'Found Then
>
> 'Else
> ' wks.Delete
> 'End If
> End If
> Next wks
>
> Application.DisplayAlerts = True
> End Sub
>
> saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal
> secara logika manusia keduanya se-olah2 sama,
> Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak
> ditemukan (Else) maka wks.Delete
> Macro2: Jika tidak ditemukan maka wks.Delete
>
> Pertanyaannya :
> Mengapa hasil kedua macro tsb berbeda ?
>
> File terlampir.
>
> Salam,
> HK
>
>
>
Tentang variabel Variant :
1. Variabel Found tidak dideklarasikan, berarti akan dideklarasikan oleh
VB/VBA dengan tipe Variant (untung tidak ada penegasan Option Explicit,
jadi tanpa deklarasi masih bisa berjalan).
2. Varibel variant akan bernilai empty (bukan Null) ketika tidak terisi
apa-apa dan ketika berisi suatu nilai, maka tipe datanya mengikuti tipe
data yang memungkinkan untuk si nilai.
3. Methods Find akan menghasilkan tipe data Range.
4. Memasukkan sebuah nilai hasil methods Find ke variabel bertipe Variant
seperti Found, ketika tanpa set, maka found akan berisi nilai dari properti
default range hasil methods Find, yaitu nilai dalam properti Value, yang
membuat variabel Found bertipe data selain Object.
5. Methods Find akan menghasilkan Nothing bila tidak menemukan yang dicari,
yang membuat tidak adanya properti default bernama Value, sehingga nilai
dalam variabel Variant bernama Found akan di-set menjadi Empty.
6. Methods Find akan menghasilkan object Range ketika yang di-Find
ditemukan, yang membuat properti default bernama Value menjadi ada dan
memiliki nilai, sehingga nilai dalam variabel Variant bernama Found akan
diisi dengan nilai properti Value milik range hasil methods Find, yaitu
sebuah String berupa nama worksheet yang sedang diproses oleh proses For
Each.
7. Jadi, variabel Found yang pada dasarnya bertipe Variant akan berubah
menjadi Empty atau menjadi bertipe String.
Tentang conditional :
1. conditional dengan IF THEN ELSE akan memeriksa ekspresi kondisi bertipe
numerik maupun boolean (TRUE atau FALSE)
2. nilai numerik 0, boolean FALSE, atau Empty membuat conditional berstatus
FALSE
3. nilai numerik selain 0, boolean TRUE, Not Empty membuat conditional
berstatus TRUE
4. pada baris berbunyi IF Found Then
<A> Ketika Found menyimpan nilai property Value bertipe String dari object
Range hasil methods Find berhasil menemukan range yang dicari, maka baris
IF ini akan menyebabkan error. Berhubung sebelum IF ada baris On Error
Resume Next, maka error di baris IF diabaikan dan masuk ke area baris kode
disisi TRUE milik blok IF. Hasilnya, terkesan bahwa IF Found Then berhasil
mendefinisikan bahwa hasil kondisi adalah TRUE, padahal kenyataannya,
proses pengkondisiannya membuat Error.
<B> Ketika Found berisi Empty yang diakibatkan oleh hasil methods Find
tidak menghasilkan apa-apa (menghasilkan Nothing), maka baris IF ini akan
memeriksa kondisi dengan bunyi IF Empty Then dan tidak menyebabkan error.
Karena nilai Empty setara dengan boolean FALSE, maka blok IF akan mencari
sisi ELSE.
Jadi, hasil kedua prosedur berbeda karena
1. Pada prosedur 2 di bagian ekspresi IF Not Found Then akan menghasilkan
error yang kemudian diabaikan akibat On Error Resume Next atau karena
variabel Found dalam keadaan Empty yang membuat Not Found akan bernilai
TRUE, yang kedua kondisi tersebut membuat baris wks.delete dijalankan.
2. Pada prosedur 1 di bagian ekspresi IF Found Then akan menuju blok FALSE
(mulai ELSE) ketika Found dalam keadaan Empty saja. Sedangkan saat Found
ada isinya bertipe String, maka proses akan memunculkan error yang
diabaikan oleh On Error Resume Next, yang membuat blok IF mengalir ke area
blok TRUE. Karena blok TRUE tidak ada yang akan dikerjakan, maka proses
segera menuju ke akhir blok Conditional.
Sedikit catatan,
Disiplin dalam mendefinisikan variabel dengan memilih tipe data yang sesuai
dengan proses akan jauh lebih menentramkan karena tidak akan muncul hal-hal
yang tidak terduga karena berupa logika dibalik layar.
Misal dengan melakukan hal-hal berikut secara utuh :
1. mendeklarasikan variabel secara jelas dan sesuai tipe datanya sesuai
kebutuhan :
*Dim Found as range*
2. memastikan ada pengabaian error dengan On Error Resume Next sebelum
proses loop (kasus ini menggunakan loop dengan For Each)
3. menambahkan set di depan baris kode proses dengan methods Find
*set *Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
4. mengubah blok conditional (kasus ini dengan blok IF THEN ELSE) menjadi :
IF* found is nothing *Then 'karena methods Find menghasilkan object range
yang akan menghasilkan nothing bila tidak berhasil menemukan
wks.delete
endif
kalo ndak salah sih gitu...
tapi sebaiknya dicoba dulu deh...
Wassalam,
Kid.
On Sat, Mar 8, 2014 at 7:57 PM, hendrik karnadi <hendrikkarnadi@yahoo.com>wrote:
>
>
> Dear Be Excellers,
>
> Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin
> menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2
> alternatif program yang nampaknya sama tapi hasilnya berbeda.
>
> Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"
> Sub Hapus_Wks1()
> 'HK for ASL (6 Maret 2014)
> Dim wks As Worksheet
> Application.
>
> For Each wks In Worksheets
> Sheets("
> On Error Resume Next
> If wks.Name <> "Proses" Then
> Found = Sheets("
> LookAt:=xlPart)
> If Found Then
>
> Else
> wks.Delete
> End If
> End If
> Next wks
>
> Application.
> End Sub
>
>
> Macro2 hanya menyisakan Sheet "Proses"
> Sub Hapus_Wks2()
> 'HK for ASL (6 Maret 2014)
> Dim wks As Worksheet
> Application.
>
> For Each wks In Worksheets
> Sheets("
> On Error Resume Next
> If wks.Name <> "Proses" Then
> Found = Sheets("
> LookAt:=xlPart)
> If Not Found Then wks.Delete 'Found Then
>
> 'Else
> ' wks.Delete
> 'End If
> End If
> Next wks
>
> Application.
> End Sub
>
> saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal
> secara logika manusia keduanya se-olah2 sama,
> Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak
> ditemukan (Else) maka wks.Delete
> Macro2: Jika tidak ditemukan maka wks.Delete
>
> Pertanyaannya :
> Mengapa hasil kedua macro tsb berbeda ?
>
> File terlampir.
>
> Salam,
> HK
>
>
>
Sat Mar 8, 2014 9:02 am (PST) . Posted by:
"Hendrik Karnadi" hendrikkarnadi
Terima kasih Mr.Kid atas pencerahannya. 100% pasti ndak salah. Tadinya saya ingin mengambil nama sheet yang mengandumg "Wkr" tanpa bantuan sheet "Proses". Jadi variable Found saya "ambangkan" sebagai Variant dan Option Explicit saya hapus maka terjadilah kekeliruan tsb.
Sekali lagi terima kasih.
Salam,
HK
Sent from Samsung Mobile"Mr. Kid" <mr.nmkid@gmail.com> wrote:Pak Hendrik,
Tentang variabel Variant :
1. Variabel Found tidak dideklarasikan, berarti akan dideklarasikan oleh VB/VBA dengan tipe Variant (untung tidak ada penegasan Option Explicit, jadi tanpa deklarasi masih bisa berjalan).
2. Varibel variant akan bernilai empty (bukan Null) ketika tidak terisi apa-apa dan ketika berisi suatu nilai, maka tipe datanya mengikuti tipe data yang memungkinkan untuk si nilai.
3. Methods Find akan menghasilkan tipe data Range.
4. Memasukkan sebuah nilai hasil methods Find ke variabel bertipe Variant seperti Found, ketika tanpa set, maka found akan berisi nilai dari properti default range hasil methods Find, yaitu nilai dalam properti Value, yang membuat variabel Found bertipe data selain Object.
5. Methods Find akan menghasilkan Nothing bila tidak menemukan yang dicari, yang membuat tidak adanya properti default bernama Value, sehingga nilai dalam variabel Variant bernama Found akan di-set menjadi Empty.
6. Methods Find akan menghasilkan object Range ketika yang di-Find ditemukan, yang membuat properti default bernama Value menjadi ada dan memiliki nilai, sehingga nilai dalam variabel Variant bernama Found akan diisi dengan nilai properti Value milik range hasil methods Find, yaitu sebuah String berupa nama worksheet yang sedang diproses oleh proses For Each.
7. Jadi, variabel Found yang pada dasarnya bertipe Variant akan berubah menjadi Empty atau menjadi bertipe String.
Tentang conditional :
1. conditional dengan IF THEN ELSE akan memeriksa ekspresi kondisi bertipe numerik maupun boolean (TRUE atau FALSE)
2. nilai numerik 0, boolean FALSE, atau Empty membuat conditional berstatus FALSE
3. nilai numerik selain 0, boolean TRUE, Not Empty membuat conditional berstatus TRUE
4. pada baris berbunyi IF Found Then
<A> Ketika Found menyimpan nilai property Value bertipe String dari object Range hasil methods Find berhasil menemukan range yang dicari, maka baris IF ini akan menyebabkan error. Berhubung sebelum IF ada baris On Error Resume Next, maka error di baris IF diabaikan dan masuk ke area baris kode disisi TRUE milik blok IF. Hasilnya, terkesan bahwa IF Found Then berhasil mendefinisikan bahwa hasil kondisi adalah TRUE, padahal kenyataannya, proses pengkondisiannya membuat Error.
<B> Ketika Found berisi Empty yang diakibatkan oleh hasil methods Find tidak menghasilkan apa-apa (menghasilkan Nothing), maka baris IF ini akan memeriksa kondisi dengan bunyi IF Empty Then dan tidak menyebabkan error. Karena nilai Empty setara dengan boolean FALSE, maka blok IF akan mencari sisi ELSE.
Jadi, hasil kedua prosedur berbeda karena
1. Pada prosedur 2 di bagian ekspresi IF Not Found Then akan menghasilkan error yang kemudian diabaikan akibat On Error Resume Next atau karena variabel Found dalam keadaan Empty yang membuat Not Found akan bernilai TRUE, yang kedua kondisi tersebut membuat baris wks.delete dijalankan.
2. Pada prosedur 1 di bagian ekspresi IF Found Then akan menuju blok FALSE (mulai ELSE) ketika Found dalam keadaan Empty saja. Sedangkan saat Found ada isinya bertipe String, maka proses akan memunculkan error yang diabaikan oleh On Error Resume Next, yang membuat blok IF mengalir ke area blok TRUE. Karena blok TRUE tidak ada yang akan dikerjakan, maka proses segera menuju ke akhir blok Conditional.
Sedikit catatan,
Disiplin dalam mendefinisikan variabel dengan memilih tipe data yang sesuai dengan proses akan jauh lebih menentramkan karena tidak akan muncul hal-hal yang tidak terduga karena berupa logika dibalik layar.
Misal dengan melakukan hal-hal berikut secara utuh :
1. mendeklarasikan variabel secara jelas dan sesuai tipe datanya sesuai kebutuhan :
Dim Found as range
2. memastikan ada pengabaian error dengan On Error Resume Next sebelum proses loop (kasus ini menggunakan loop dengan For Each)
3. menambahkan set di depan baris kode proses dengan methods Find
set Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
4. mengubah blok conditional (kasus ini dengan blok IF THEN ELSE) menjadi :
IF found is nothing Then 'karena methods Find menghasilkan object range yang akan menghasilkan nothing bila tidak berhasil menemukan
wks.delete
endif
kalo ndak salah sih gitu...
tapi sebaiknya dicoba dulu deh...
Wassalam,
Kid.
On Sat, Mar 8, 2014 at 7:57 PM, hendrik karnadi <hendrikkarnadi@yahoo.com> wrote:
Dear Be Excellers,
Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2 alternatif program yang nampaknya sama tapi hasilnya berbeda.
Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"),
Sub Hapus_Wks1()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In Worksheets
Sheets("Proses").Range("A1") = wks.Name
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
If Found Then
Else
wks.Delete
End If
End If
Next wks
Application.DisplayAlerts = True
End Sub
Macro2 hanya menyisakan Sheet "Proses",
Sub Hapus_Wks2()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.DisplayAlerts = False
For Each wks In Worksheets
Sheets("Proses").Range("A1") = wks.Name
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
If Not Found Then wks.Delete 'Found Then
'Else
' wks.Delete
'End If
End If
Next wks
Application.DisplayAlerts = True
End Sub
saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal secara logika manusia keduanya se-olah2 sama,
Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak ditemukan (Else) maka wks.Delete
Macro2: Jika tidak ditemukan maka wks.Delete
Pertanyaannya :
Mengapa hasil kedua macro tsb berbeda ?
File terlampir.
Salam,
HK
Sekali lagi terima kasih.
Salam,
HK
Sent from Samsung Mobile"Mr. Kid" <mr.nmkid@gmail.com> wrote:Pak Hendrik,
Tentang variabel Variant :
1. Variabel Found tidak dideklarasikan, berarti akan dideklarasikan oleh VB/VBA dengan tipe Variant (untung tidak ada penegasan Option Explicit, jadi tanpa deklarasi masih bisa berjalan).
2. Varibel variant akan bernilai empty (bukan Null) ketika tidak terisi apa-apa dan ketika berisi suatu nilai, maka tipe datanya mengikuti tipe data yang memungkinkan untuk si nilai.
3. Methods Find akan menghasilkan tipe data Range.
4. Memasukkan sebuah nilai hasil methods Find ke variabel bertipe Variant seperti Found, ketika tanpa set, maka found akan berisi nilai dari properti default range hasil methods Find, yaitu nilai dalam properti Value, yang membuat variabel Found bertipe data selain Object.
5. Methods Find akan menghasilkan Nothing bila tidak menemukan yang dicari, yang membuat tidak adanya properti default bernama Value, sehingga nilai dalam variabel Variant bernama Found akan di-set menjadi Empty.
6. Methods Find akan menghasilkan object Range ketika yang di-Find ditemukan, yang membuat properti default bernama Value menjadi ada dan memiliki nilai, sehingga nilai dalam variabel Variant bernama Found akan diisi dengan nilai properti Value milik range hasil methods Find, yaitu sebuah String berupa nama worksheet yang sedang diproses oleh proses For Each.
7. Jadi, variabel Found yang pada dasarnya bertipe Variant akan berubah menjadi Empty atau menjadi bertipe String.
Tentang conditional :
1. conditional dengan IF THEN ELSE akan memeriksa ekspresi kondisi bertipe numerik maupun boolean (TRUE atau FALSE)
2. nilai numerik 0, boolean FALSE, atau Empty membuat conditional berstatus FALSE
3. nilai numerik selain 0, boolean TRUE, Not Empty membuat conditional berstatus TRUE
4. pada baris berbunyi IF Found Then
<A> Ketika Found menyimpan nilai property Value bertipe String dari object Range hasil methods Find berhasil menemukan range yang dicari, maka baris IF ini akan menyebabkan error. Berhubung sebelum IF ada baris On Error Resume Next, maka error di baris IF diabaikan dan masuk ke area baris kode disisi TRUE milik blok IF. Hasilnya, terkesan bahwa IF Found Then berhasil mendefinisikan bahwa hasil kondisi adalah TRUE, padahal kenyataannya, proses pengkondisiannya membuat Error.
<B> Ketika Found berisi Empty yang diakibatkan oleh hasil methods Find tidak menghasilkan apa-apa (menghasilkan Nothing), maka baris IF ini akan memeriksa kondisi dengan bunyi IF Empty Then dan tidak menyebabkan error. Karena nilai Empty setara dengan boolean FALSE, maka blok IF akan mencari sisi ELSE.
Jadi, hasil kedua prosedur berbeda karena
1. Pada prosedur 2 di bagian ekspresi IF Not Found Then akan menghasilkan error yang kemudian diabaikan akibat On Error Resume Next atau karena variabel Found dalam keadaan Empty yang membuat Not Found akan bernilai TRUE, yang kedua kondisi tersebut membuat baris wks.delete dijalankan.
2. Pada prosedur 1 di bagian ekspresi IF Found Then akan menuju blok FALSE (mulai ELSE) ketika Found dalam keadaan Empty saja. Sedangkan saat Found ada isinya bertipe String, maka proses akan memunculkan error yang diabaikan oleh On Error Resume Next, yang membuat blok IF mengalir ke area blok TRUE. Karena blok TRUE tidak ada yang akan dikerjakan, maka proses segera menuju ke akhir blok Conditional.
Sedikit catatan,
Disiplin dalam mendefinisikan variabel dengan memilih tipe data yang sesuai dengan proses akan jauh lebih menentramkan karena tidak akan muncul hal-hal yang tidak terduga karena berupa logika dibalik layar.
Misal dengan melakukan hal-hal berikut secara utuh :
1. mendeklarasikan variabel secara jelas dan sesuai tipe datanya sesuai kebutuhan :
Dim Found as range
2. memastikan ada pengabaian error dengan On Error Resume Next sebelum proses loop (kasus ini menggunakan loop dengan For Each)
3. menambahkan set di depan baris kode proses dengan methods Find
set Found = Sheets("Proses").Range("A1").Find("Wkr", LookAt:=xlPart)
4. mengubah blok conditional (kasus ini dengan blok IF THEN ELSE) menjadi :
IF found is nothing Then 'karena methods Find menghasilkan object range yang akan menghasilkan nothing bila tidak berhasil menemukan
wks.delete
endif
kalo ndak salah sih gitu...
tapi sebaiknya dicoba dulu deh...
Wassalam,
Kid.
On Sat, Mar 8, 2014 at 7:57 PM, hendrik karnadi <hendrikkarnadi@yahoo.com> wrote:
Dear Be Excellers,
Bermula dari kasus yang diajukan Bapak ASL yang salah satunya adalah ingin menghapus Nama2 Sheet yang tidak ada "Wkr" nya, saya mencoba membuat 2 alternatif program yang nampaknya sama tapi hasilnya berbeda.
Macro1 menghasilkan 6 Sheet (1 Sheet "Proses" dan 5 Sheet "Wkr"
Sub Hapus_Wks1()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.
For Each wks In Worksheets
Sheets("
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("
If Found Then
Else
wks.Delete
End If
End If
Next wks
Application.
End Sub
Macro2 hanya menyisakan Sheet "Proses"
Sub Hapus_Wks2()
'HK for ASL (6 Maret 2014)
Dim wks As Worksheet
Application.
For Each wks In Worksheets
Sheets("
On Error Resume Next
If wks.Name <> "Proses" Then
Found = Sheets("
If Not Found Then wks.Delete 'Found Then
'Else
' wks.Delete
'End If
End If
Next wks
Application.
End Sub
saya yakin hal tsb terjadi krn code "On Error Resume Next", padahal secara logika manusia keduanya se-olah2 sama,
Macro1: Jika ditemukan kosong maka tidak ada langkah tetapi jika tidak ditemukan (Else) maka wks.Delete
Macro2: Jika tidak ditemukan maka wks.Delete
Pertanyaannya :
Mengapa hasil kedua macro tsb berbeda ?
File terlampir.
Salam,
HK
Sat Mar 8, 2014 4:59 pm (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Irianto,
tritnya sudah berhari-hari mejeng di etalase tapi belum disenggol
BeExceller.... :(
Daftar kasusnya :
kasus 1
bagaimana cara input value componen material di sheets usage berdasarkan
hasil produksi tanpa melakukan 2 tahap,inginnya ketika hasil produksi di
input,secara otomatis pemakaian komponen langsung terinput di sheet usage
kasus 2
bagaimana cara input value idle time berdasarkan kriteria namaline,tanggal
dan shift
note:apabila form ataupun syntax ada yang harus dirubah/ditambahkan saya
persilahkan
-->Kasus 1<--
Material :
1. produk memiliki kode material yang disebut material fg
2. sebuah material fg memiliki lebih dari satu material penyusun yang
setiap material penyusunnya memiliki kode bernama material id.
berarti dibutuhkan sebuah sheet baru berisi : (misal diberi nama TrnUsage)
*1. tanggal produksi*
*2. nomor shift3. line4. material fg *
5. material id
6. kebutuhan (hasil komputasi nilai basic dari referensi BOM dan jumlah pcs
yang di input user)
> Sheet BOM kemudian diisi seluruh material FG untuk seluruh line dan
shift. Pada sumber data untuk combobox produk disediakan sebuah kolom
tambahan bernama nItemMaterial yang berisi jumlah item material yang
digunakan oleh material fg tersebut.
> Pada event click tombol input di form input produksi ditambahkan baris
kode untuk menulis seluruh material id dari prosuk terpilih ke sheet
TrnUsage, melakukan komputasi jumlah pcs dan mengkalkulasi nilai total
kebutuhan setiap material id dan menuliskannya ke kolom kebutuhan di sheet
TrnUsage.
jadi, sheet Usage yang sudah ada adalah salah satu output yang bisa disusun
dengan formula SumIFs yang merujuk ke sheet TrnUsage.
-->Kasus 2<--
dibutuhkan sebuah sheet baru berisi : (misal diberi nama TrnProductionTime)
*1. tanggal produksi*
*2. nomor shift3. line4. material fg *
5. problem
6. tanggal dan waktu mulai -> lengkap, ada tanggal beserta waktunya
7. tanggal dan waktu selesai -> lengkap, ada tanggal beserta waktunya
8. jumlah waktu (komputasi tanggal dan waktu selesai - tanggal dan waktu
mulai
> pada event click tombol input di form idletime ditambahkan baris kode
untuk menulis seluruh inputan tanggal dan waktu mulai, tanggal dan waktu
selesai, hasil komputasi jumlah waktu untuk setiap item yang di-input oleh
user.
jadi, sheet IdleTime yang sudah ada adalah salah satu output yang bisa
disusun dengan formula SumIFs yang merujuk ke sheet TrnProductionTime.
Kira-kira demikian gambaran alurnya...
Semoga dengan kondisi seperti itu, maka akan banyak BeExceller yang merasa
mudah untuk membantu.
Andai kurang berkenan, mohon maaf ya...
Wassalam,
Kid.
2014-03-06 17:55 GMT+07:00 irianto <irianto.mandala@yahoo.com>:
>
>
> Dear master excel........
>
>
>
> Sebelumnya salam kenal dari saya,karena saya baru bergabung di grup
>
>
>
> Dan saya masih awam dalam macro excel,karenaitu mohon bantuan dan
> pencerahan para master untuk
>
>
>
> Memecahkan masalah ini,file terlampir................
>
>
>
> Mohon maaf apabila penyampaian saya kurang dimengerti
>
>
>
> Trims..
>
>
>
>
>
>
>
tritnya sudah berhari-hari mejeng di etalase tapi belum disenggol
BeExceller.... :(
Daftar kasusnya :
kasus 1
bagaimana cara input value componen material di sheets usage berdasarkan
hasil produksi tanpa melakukan 2 tahap,inginnya ketika hasil produksi di
input,secara otomatis pemakaian komponen langsung terinput di sheet usage
kasus 2
bagaimana cara input value idle time berdasarkan kriteria namaline,tanggal
dan shift
note:apabila form ataupun syntax ada yang harus dirubah/ditambahkan saya
persilahkan
-->Kasus 1<--
Material :
1. produk memiliki kode material yang disebut material fg
2. sebuah material fg memiliki lebih dari satu material penyusun yang
setiap material penyusunnya memiliki kode bernama material id.
berarti dibutuhkan sebuah sheet baru berisi : (misal diberi nama TrnUsage)
*1. tanggal produksi*
*2. nomor shift3. line4. material fg *
5. material id
6. kebutuhan (hasil komputasi nilai basic dari referensi BOM dan jumlah pcs
yang di input user)
> Sheet BOM kemudian diisi seluruh material FG untuk seluruh line dan
shift. Pada sumber data untuk combobox produk disediakan sebuah kolom
tambahan bernama nItemMaterial yang berisi jumlah item material yang
digunakan oleh material fg tersebut.
> Pada event click tombol input di form input produksi ditambahkan baris
kode untuk menulis seluruh material id dari prosuk terpilih ke sheet
TrnUsage, melakukan komputasi jumlah pcs dan mengkalkulasi nilai total
kebutuhan setiap material id dan menuliskannya ke kolom kebutuhan di sheet
TrnUsage.
jadi, sheet Usage yang sudah ada adalah salah satu output yang bisa disusun
dengan formula SumIFs yang merujuk ke sheet TrnUsage.
-->Kasus 2<--
dibutuhkan sebuah sheet baru berisi : (misal diberi nama TrnProductionTime)
*1. tanggal produksi*
*2. nomor shift3. line4. material fg *
5. problem
6. tanggal dan waktu mulai -> lengkap, ada tanggal beserta waktunya
7. tanggal dan waktu selesai -> lengkap, ada tanggal beserta waktunya
8. jumlah waktu (komputasi tanggal dan waktu selesai - tanggal dan waktu
mulai
> pada event click tombol input di form idletime ditambahkan baris kode
untuk menulis seluruh inputan tanggal dan waktu mulai, tanggal dan waktu
selesai, hasil komputasi jumlah waktu untuk setiap item yang di-input oleh
user.
jadi, sheet IdleTime yang sudah ada adalah salah satu output yang bisa
disusun dengan formula SumIFs yang merujuk ke sheet TrnProductionTime.
Kira-kira demikian gambaran alurnya...
Semoga dengan kondisi seperti itu, maka akan banyak BeExceller yang merasa
mudah untuk membantu.
Andai kurang berkenan, mohon maaf ya...
Wassalam,
Kid.
2014-03-06 17:55 GMT+07:00 irianto <irianto.mandala@yahoo.com>:
>
>
> Dear master excel.......
>
>
>
> Sebelumnya salam kenal dari saya,karena saya baru bergabung di grup
>
>
>
> Dan saya masih awam dalam macro excel,karenaitu mohon bantuan dan
> pencerahan para master untuk
>
>
>
> Memecahkan masalah ini,file terlampir...
>
>
>
> Mohon maaf apabila penyampaian saya kurang dimengerti
>
>
>
> Trims..
>
>
>
>
>
>
>
Sat Mar 8, 2014 5:09 pm (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Trit ini juga sudah 2 hari belum tersenggol....
Bisa jadi disebabkan antara lain karena kurang detilnya penjelasan tentang
kasus.
Mungkin penjabaran detil alur proses akan membantu calon penanggap.
Misalnya, bercerita tentang :
awalnya ada data begini, lalu user klik ini muncul itu, input ini, ini
juga, dan itu dan pencet ini akan membuat data yang tadinya ada disini yang
begini akan tersalin ke sana dan berbentuk seperti ini yang contoh kerja
manualnya dengan memilih satu-satu sudah dilakukan seperti tampak di sheet
entu... Kemudian dari sheet entu, nanti si user begini dan begono, dst.....
:)
maaf kalau ndak berkenan...
Wassalam,
Kid.
2014-03-07 8:10 GMT+07:00 nor hidayat <dayatshogun46@yahoo.co.id>:
>
>
> Dear Sobat Be-Exceler
>
> Meneruskan postingan saya, saya masih kurang paham dengan macro yang saya
> tambahkan dari beberapa postingan di be-exceler
> mohon bantuan rekan-rekan untuk pencerahannya.
>
> data terbaru terlampir
>
> regards
> dayat
>
> --------------------------------------------
> Pada Jum, 28/2/14, dayatshogun46@yahoo.co.id <dayatshogun46@yahoo.co.id>
> menulis:
>
> Judul: Bls: Re: [belajar-excel] User form input, edit data
> Kepada: "Belajar-excel" <belajar-excel@yahoogroups.com>
> Tanggal: Jumat, 28 Februari, 2014, 11:40 AM
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Terimakasih mis Jan saya coba duluPowered by
> Telkomsel BlackBerry(R)From: Jan
> Raisin <miss.jan.raisin@gmail.com>
> Sender: belajar-excel@yahoogroups.com
> Date: Fri, 28 Feb 2014 09:18:06
> +0700To:
> <belajar-excel@yahoogroups.com>ReplyTo:
> belajar-excel@yahoogroups.com
> Subject: Re: [belajar-excel] User form
> input, edit data
>
>
>
>
>
>
>
>
>
>
> Thread ini 3 hari belum ada yang
> menanggapi,
>
>
> setelah Jan buka filenya ternyata scriptnya masih kosong,
> baru ada script untuk Show dan Hide saja.. hiks
> T_T
>
>
> Sambil menunggu Be-Exceller lain yang mungkin ada yang
> berbaik hati untuk membuatkan scriptnya, silakan coba cari
> di arsip milis tentang Input Data menggunakan
> macro,
>
>
> Alternatif
> lain bisa menggunakan Data Form bawaan Excel yang bisa
> langsung melakukan Add, Edit, dan Delete data tanpa harus
> bersusah payah bikin scriptnya dulu.
>
> tampilannya
> seperti gambar di bawah ini:
>
>
>
> Lalu untuk
> menampilkan tiap tanggal ke masing2 sheet yang berbeda bisa
> memanfaatkan fitur Pivot Table (tidak perlu tulis script
> lagi). Kalo pengen dibuat otomatisnya, bisa menggunakan
> proses rekam macro (cara ini berhasil untuk Jan yang tidak
> memiliki basic di bidang IT tetapi ingin bisa nulis script
> sendiri)
>
>
> maaf kalo
> solusi yang ditawarkan tidak sesuai dengan harapan.
>
>
> Wassalam,
>
>
> -Miss Jan
> Raisin-
>
>
>
>
> Pada 25 Februari 2014 14.53, <dayatshogun46@yahoo.co.id>
> menulis:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Dear sobat-sobat Be-Exceller
> (Edited by Momod)
>
>
>
>
> Selamat sore sobat excel yang sedang siap-siap pulang dari
> rutinitas harian,
>
>
> Moga sore ini tidak banyak pekerjaan yang memusingkan kalian
> itu karena bantuan dari milis belajar excel (Edited by
> Momod) ini.
>
>
>
>
>
> Denan ini saya mohon bantuannya untuk menyempurnakan data
> user form yang saya buat, mungkin saya masih baru dan begitu
> kurang paham mengenai bahasa macro, tapi saya sudah siapkan
> data yang sebisa mungkin saya buat di user form ini, namun
> mentok di bahasa lainnya, mohon bantuannya.
>
>
>
>
>
> Salam
>
>
> Dayat
>
>
> Powered by Telkomsel BlackBerry(R)
>
> ----- Mods -----
> sebutan member milis ini adalah Be-Exceller
> nama milis ini adalah Belajar Excel
> semoga selanjutnya tidak salah sebut dengan milis sebelah
> ___________
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Bisa jadi disebabkan antara lain karena kurang detilnya penjelasan tentang
kasus.
Mungkin penjabaran detil alur proses akan membantu calon penanggap.
Misalnya, bercerita tentang :
awalnya ada data begini, lalu user klik ini muncul itu, input ini, ini
juga, dan itu dan pencet ini akan membuat data yang tadinya ada disini yang
begini akan tersalin ke sana dan berbentuk seperti ini yang contoh kerja
manualnya dengan memilih satu-satu sudah dilakukan seperti tampak di sheet
entu... Kemudian dari sheet entu, nanti si user begini dan begono, dst.....
:)
maaf kalau ndak berkenan...
Wassalam,
Kid.
2014-03-07 8:10 GMT+07:00 nor hidayat <dayatshogun46@yahoo.co.id>:
>
>
> Dear Sobat Be-Exceler
>
> Meneruskan postingan saya, saya masih kurang paham dengan macro yang saya
> tambahkan dari beberapa postingan di be-exceler
> mohon bantuan rekan-rekan untuk pencerahannya.
>
> data terbaru terlampir
>
> regards
> dayat
>
> --------------------------------------------
> Pada Jum, 28/2/14, dayatshogun46@yahoo.co.id <dayatshogun46@yahoo.co.id>
> menulis:
>
> Judul: Bls: Re: [belajar-excel] User form input, edit data
> Kepada: "Belajar-excel" <belajar-excel@yahoogroups.com>
> Tanggal: Jumat, 28 Februari, 2014, 11:40 AM
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Terimakasih mis Jan saya coba duluPowered by
> Telkomsel BlackBerry(R)From: Jan
> Raisin <miss.jan.raisin@gmail.com>
> Sender: belajar-excel@yahoogroups.com
> Date: Fri, 28 Feb 2014 09:18:06
> +0700To:
> <belajar-excel@yahoogroups.com>ReplyTo:
> belajar-excel@yahoogroups.com
> Subject: Re: [belajar-excel] User form
> input, edit data
>
>
>
>
>
>
>
>
>
>
> Thread ini 3 hari belum ada yang
> menanggapi,
>
>
> setelah Jan buka filenya ternyata scriptnya masih kosong,
> baru ada script untuk Show dan Hide saja.. hiks
> T_T
>
>
> Sambil menunggu Be-Exceller lain yang mungkin ada yang
> berbaik hati untuk membuatkan scriptnya, silakan coba cari
> di arsip milis tentang Input Data menggunakan
> macro,
>
>
> Alternatif
> lain bisa menggunakan Data Form bawaan Excel yang bisa
> langsung melakukan Add, Edit, dan Delete data tanpa harus
> bersusah payah bikin scriptnya dulu.
>
> tampilannya
> seperti gambar di bawah ini:
>
>
>
> Lalu untuk
> menampilkan tiap tanggal ke masing2 sheet yang berbeda bisa
> memanfaatkan fitur Pivot Table (tidak perlu tulis script
> lagi). Kalo pengen dibuat otomatisnya, bisa menggunakan
> proses rekam macro (cara ini berhasil untuk Jan yang tidak
> memiliki basic di bidang IT tetapi ingin bisa nulis script
> sendiri)
>
>
> maaf kalo
> solusi yang ditawarkan tidak sesuai dengan harapan.
>
>
> Wassalam,
>
>
> -Miss Jan
> Raisin-
>
>
>
>
> Pada 25 Februari 2014 14.53, <dayatshogun46@yahoo.co.id>
> menulis:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Dear sobat-sobat Be-Exceller
> (Edited by Momod)
>
>
>
>
> Selamat sore sobat excel yang sedang siap-siap pulang dari
> rutinitas harian,
>
>
> Moga sore ini tidak banyak pekerjaan yang memusingkan kalian
> itu karena bantuan dari milis belajar excel (Edited by
> Momod) ini.
>
>
>
>
>
> Denan ini saya mohon bantuannya untuk menyempurnakan data
> user form yang saya buat, mungkin saya masih baru dan begitu
> kurang paham mengenai bahasa macro, tapi saya sudah siapkan
> data yang sebisa mungkin saya buat di user form ini, namun
> mentok di bahasa lainnya, mohon bantuannya.
>
>
>
>
>
> Salam
>
>
> Dayat
>
>
> Powered by Telkomsel BlackBerry(R)
>
> ----- Mods -----
> sebutan member milis ini adalah Be-Exceller
> nama milis ini adalah Belajar Excel
> semoga selanjutnya tidak salah sebut dengan milis sebelah
> ___________
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
Sat Mar 8, 2014 5:36 pm (PST) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Fendi,
Coba langkah berikut :
1. blok data di sheet skl tanpa header (mulai baris 2) dan beri nama range
dengan nama _proteksi_
2. blok area input di sheet peng mulai D4 (klik D4 pertama kali agar aktif)
sampai dengan kolom terkanan di baris terbawah data
3. buat data validation -> pilih Custom -> hilangkan centang Ignore blank
-> pada Formula diisi bunyi formula berikut :
=(VLOOKUP(LOOKUP("z",$D$2:D$2),_proteksi_,2,0)<>"")*(D4>=0)*(D4<=100)
*** jika regional setting komputer setempat adalah Indonesian, maka ganti
seluruh karakter koma dalam formula dengan karakter titik koma.
4. OK sampai kembali ke worksheet
Catatan :
cell blank akan dianggap invalid oleh Excel jika dilakukan pemeriksaan
validitas berdasar data validation.
Wassalam,
Kid.
2014-03-08 6:50 GMT+07:00 Fendi S <fendis@rocketmail.com>:
>
>
> kepada yth. Master excell
> saya kesulitan dalam membuat rumus cara memprotek bersyarat. filenya saya
> lampirkan. mohon kepada master untuk dapat membantu saya. terima kasih
> sebelumnya.
>
>
>
Coba langkah berikut :
1. blok data di sheet skl tanpa header (mulai baris 2) dan beri nama range
dengan nama _proteksi_
2. blok area input di sheet peng mulai D4 (klik D4 pertama kali agar aktif)
sampai dengan kolom terkanan di baris terbawah data
3. buat data validation -> pilih Custom -> hilangkan centang Ignore blank
-> pada Formula diisi bunyi formula berikut :
=(VLOOKUP(LOOKUP("z",$D$2:D$2),_proteksi_,2,0)<>"")*(D4>=0)*(D4<=100)
*** jika regional setting komputer setempat adalah Indonesian, maka ganti
seluruh karakter koma dalam formula dengan karakter titik koma.
4. OK sampai kembali ke worksheet
Catatan :
cell blank akan dianggap invalid oleh Excel jika dilakukan pemeriksaan
validitas berdasar data validation.
Wassalam,
Kid.
2014-03-08 6:50 GMT+07:00 Fendi S <fendis@rocketmail.com>:
>
>
> kepada yth. Master excell
> saya kesulitan dalam membuat rumus cara memprotek bersyarat. filenya saya
> lampirkan. mohon kepada master untuk dapat membantu saya. terima kasih
> sebelumnya.
>
>
>
Sat Mar 8, 2014 6:33 pm (PST) . Posted by:
"Shenly" shenly_excelmania
terima kasih pk dwint....sarannya sangat membantu ^^
Salam
Shenly ^^*
Pada Sabtu, 8 Maret 2014 15:00, dwint ruswanto <dwint.ruswanto@gmail.com> menulis:
Hai Shenly,
mungkin seperti file terlampir
Wassalam,
-dwint-
Pada 8 Maret 2014 12.21, Shenly <shenly_excelmania@yahoo.co.id> menulis:
>
>halo master..mau tanya ....gimana caranya membuat blokan atau kunci dari data validation...
>untuk lebih jelasnya saya sudah lampirkan filnya..
>terima kasih
>
>Salam
>Shenly ^^*
Salam
Shenly ^^*
Pada Sabtu, 8 Maret 2014 15:00, dwint ruswanto <dwint.ruswanto@gmail.com> menulis:
Hai Shenly,
mungkin seperti file terlampir
Wassalam,
-dwint-
Pada 8 Maret 2014 12.21, Shenly <shenly_excelmania@yahoo.co.id> menulis:
>
>halo master..mau tanya ....gimana caranya membuat blokan atau kunci dari data validation..
>untuk lebih jelasnya saya sudah lampirkan filnya..
>terima kasih
>
>Salam
>Shenly ^^*
Sun Mar 9, 2014 3:56 am (PDT) . Posted by:
"Fendi S" fendis@rocketmail.com
Kepada Yth. Master excell
Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?) Mohon kiranya para maste memberikan solusi (file saya lampirkan)
Terima kasih .
Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?) Mohon kiranya para maste memberikan solusi (file saya lampirkan)
Terima kasih .
Sun Mar 9, 2014 4:01 am (PDT) . Posted by:
"Mr. Kid" nmkid.family@ymail.com
Hai Fendi,
Biasanya error value #Name? muncul antara lain dikarenakan oleh :
1. ada nama range yang tidak dikenal
2. salah tulis nama fungsi (bawaan Excel maupun UDF) atau tidak ada nama
fungsi tersebut
Coba deh diperiksa lagi bunyi formulanya, mungkin ada yang salah tulis atau
rujukan ndak dikenali Excel.
Ketika di dalam IF, jika kesalahan penulisan tersebut disatu sisi dari IF
(sisi TRUE saja atau FALSE saja), maka akan memunculkan hasil yang tampak
kadang sukses dan kadang menghasilkan error value #Name?
Selamat meneliti ulang penulisan formulanya....
Wassalam,
Kid.
2014-03-09 17:46 GMT+07:00 Fendi S <fendis@rocketmail.com>:
>
>
> Kepada Yth. Master excell
> Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan
> rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?)
> Mohon kiranya para maste memberikan solusi (file saya lampirkan)
> Terima kasih .
>
>
>
Biasanya error value #Name? muncul antara lain dikarenakan oleh :
1. ada nama range yang tidak dikenal
2. salah tulis nama fungsi (bawaan Excel maupun UDF) atau tidak ada nama
fungsi tersebut
Coba deh diperiksa lagi bunyi formulanya, mungkin ada yang salah tulis atau
rujukan ndak dikenali Excel.
Ketika di dalam IF, jika kesalahan penulisan tersebut disatu sisi dari IF
(sisi TRUE saja atau FALSE saja), maka akan memunculkan hasil yang tampak
kadang sukses dan kadang menghasilkan error value #Name?
Selamat meneliti ulang penulisan formulanya....
Wassalam,
Kid.
2014-03-09 17:46 GMT+07:00 Fendi S <fendis@rocketmail.com>:
>
>
> Kepada Yth. Master excell
> Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan
> rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?)
> Mohon kiranya para maste memberikan solusi (file saya lampirkan)
> Terima kasih .
>
>
>
Sun Mar 9, 2014 4:10 am (PDT) . Posted by:
dayatshogun46
If berantai itu kayaknya bisa, dalam bahasa manusianya logika pertama, jika benar, jika salah ( gunakan if lagi ), lanjulogika jika benar, jika salah ( gunakan if lagi ), dan seterusnya
Contoh if(logika jika,true,if(logika jika, true, if(ligika.... Danseterusnya
Dayat
Powered by Telkomsel BlackBerry�
-----Original Message-----
From: Fendi S <fendis@rocketmail.com>
Sender: belajar-excel@yahoogroups.com
Date: Sun, 9 Mar 2014 18:46:07
To: <belajar-excel@yahoogroups.com>
Reply-To: belajar-excel@yahoogroups.com
Subject: [belajar-excel] rumus if - and berantai [1 Attachment]
Kepada Yth. Master excell
Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?) Mohon kiranya para maste memberikan solusi (file saya lampirkan)
Terima kasih .
Contoh if(logika jika,true,if(logika jika, true, if(ligika.... Danseterusnya
Dayat
Powered by Telkomsel BlackBerry�
-----Original Message-----
From: Fendi S <fendis@rocketmail.com>
Sender: belajar-excel@yahoogroups.com
Date: Sun, 9 Mar 2014 18:46:07
To: <belajar-excel@yahoogroups.com>
Reply-To: belajar-excel@yahoogroups.com
Subject: [belajar-excel] rumus if - and berantai [1 Attachment]
Kepada Yth. Master excell
Apakah menggunakan rumus if and tidak bisa diulang-ulang. Saya menggunakan rumus tersebut ada yang jalan, ada yang tidak jalan (alias tertulis NAME#?) Mohon kiranya para maste memberikan solusi (file saya lampirkan)
Terima kasih .
Sun Mar 9, 2014 4:22 am (PDT) . Posted by:
"WIRAnata Kemala 鄧又銘" kwiranata
Maap baru reply, belum sempat coba. Besok di kantor akan coba ;)
Trims banget atas bantuannya yah ..
regards, Wira 鄧又銘
on Note 3
On Mar 7, 2014 12:11 AM, "Mr. Kid" <mr.nmkid@gmail.com> wrote:
>
>
> Hai Wira,
>
> Copy dan mem-values-kennya satu per satu saja ya (di-loop)
>
> dim vShtName as variant
> dim wbkApp as workbook,wbkTarget as workbook
> dim sht as worksheet, lShtNew as long
>
> on error resume next
> lshtnew=application.sheetsinnewworkbook
> application.sheetsinnewworkbook=1
> application.displayalerts=false
>
> wbkapp=thisworkbook
> wbktarget=workbooks.add
>
> for each vshtname in array("IDR", "USD", "JPY")
> set sht=wbkapp.sheets(vshtname)
> if err.number<>0 then
> err.clear
> else
> sht.copy after:=wbktarget.sheets(wbktarget.sheets.count)
> endif
> next vshtname
> if wbktarget.sheets.count>1 then
> wbktarget.sheets(1).delete
> endif
> application.sheetsinnewworkbook=lshtnew
> application.displayalerts=true
> err.clear
> on error goto 0
>
>
> Wassalam,
> Kid.
>
>
>
>
>
> 2014-03-06 19:19 GMT+07:00 WIRAnata Kemala 鄧又銘 <kwiranata.milis@gmail.com>
> :
>
>>
>>
>> dear all,
>>
>> saya lagi kotak-katik untuk save selected worksheets ke new workbook.
>>
>> katakanlah, di workbook original ada 10 worksheets, dan saya hanya ingin
>> copy selected worksheet (yakni: IDR, USD, JPY) ke workbook baru.
>>
>> kendala nya saya adalah bagaimana jika worksheet JPY tidak ada (kebetulan
>> sedang tidak ada)?
>> selalu kena error "subscript out of range".
>> bagaimana cara supaya selalu harus ambil worksheet IDR, USD dan JPY jika
>> worksheet terkait ada, dan hanya copy - save worksheet yg ada ke workbook
>> baru (jika JPY worksheet tidak ada, berarti hanya copy worksheet IDR dan
>> USD lalu ke workbook baru).
>>
>> sepertinya harus pake catch error or something? :)
>>
>> berikut adalah vba simple nya :
>>
>> Dim ws As Worksheet
>> Sheets(Array("IDR", "USD", "JPY")).Copy
>> For Each ws In ActiveWorkbook.Worksheets
>> With ws.UsedRange
>> .Value = .Formula
>> End With
>> Next ws
>>
>> mohon konsul & bantuannya :)
>>
>> terima kasih banyak..
>> --
>> regards, Wira 鄧又銘
>> on desktop FireFox
>>
>>
>
>
Trims banget atas bantuannya yah ..
regards, Wira 鄧又銘
on Note 3
On Mar 7, 2014 12:11 AM, "Mr. Kid" <mr.nmkid@gmail.com> wrote:
>
>
> Hai Wira,
>
> Copy dan mem-values-kennya satu per satu saja ya (di-loop)
>
> dim vShtName as variant
> dim wbkApp as workbook,wbkTarget as workbook
> dim sht as worksheet, lShtNew as long
>
> on error resume next
> lshtnew=application.sheetsinnewworkbook
> application.sheetsinnewworkbook=1
> application.displayalerts=false
>
> wbkapp=thisworkbook
> wbktarget=workbooks.add
>
> for each vshtname in array("IDR", "USD", "JPY")
> set sht=wbkapp.sheets(vshtname)
> if err.number<>0 then
> err.clear
> else
> sht.copy after:=wbktarget.sheets(wbktarget.sheets.count)
> endif
> next vshtname
> if wbktarget.sheets.count>1 then
> wbktarget.sheets(1).delete
> endif
> application.sheetsinnewworkbook=lshtnew
> application.displayalerts=true
> err.clear
> on error goto 0
>
>
> Wassalam,
> Kid.
>
>
>
>
>
> 2014-03-06 19:19 GMT+07:00 WIRAnata Kemala 鄧又銘 <kwiranata.milis@gmail.com>
> :
>
>>
>>
>> dear all,
>>
>> saya lagi kotak-katik untuk save selected worksheets ke new workbook.
>>
>> katakanlah, di workbook original ada 10 worksheets, dan saya hanya ingin
>> copy selected worksheet (yakni: IDR, USD, JPY) ke workbook baru.
>>
>> kendala nya saya adalah bagaimana jika worksheet JPY tidak ada (kebetulan
>> sedang tidak ada)?
>> selalu kena error "subscript out of range".
>> bagaimana cara supaya selalu harus ambil worksheet IDR, USD dan JPY jika
>> worksheet terkait ada, dan hanya copy - save worksheet yg ada ke workbook
>> baru (jika JPY worksheet tidak ada, berarti hanya copy worksheet IDR dan
>> USD lalu ke workbook baru).
>>
>> sepertinya harus pake catch error or something? :)
>>
>> berikut adalah vba simple nya :
>>
>> Dim ws As Worksheet
>> Sheets(Array(
>> For Each ws In ActiveWorkbook.
>> With ws.UsedRange
>> .Value = .Formula
>> End With
>> Next ws
>>
>> mohon konsul & bantuannya :)
>>
>> terima kasih banyak..
>> --
>> regards, Wira 鄧又銘
>> on desktop FireFox
>>
>>
>
>
=====================================================================
Untuk memudahkan tim penyusun materi Belajar Excel yang lebih sesuai kebutuhan member, silakan ungkapkan permasalahan yang kerap ditemui dalam menggunakan Excel sehari-hari atau hal-hal yang ingin dipelajari dalam jangka dekat ini. Mohon diprioritaskan dari yang sering ditemui sampai yang ingin dipelajari.
Isi sesuai kelompoknya (fitur-fitur, formula-formula tertentu yang masih membingungkan, otomasi atau pemrograman dalam Excel [Macro - VBA], hal lainnya yang membuat Anda kesulitan dalam mempelajari Excel).
Boleh mengisi berulang kali untuk menambah uneg-uneg yang ingin diungkapkan.
Link untuk menuangkan seluruh uneg-uneg tersebut ada di :
http://tech.groups.yahoo.com/group/belajar-excel/database?method=addRecord&tbl=3
=====================================================================
Langkah kecil Anda dalam mengisi database bisa menjadi langkah pertama yang bermanfaat besar untuk kita semua.
=====================================================================
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com
berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe):
kirim mail kosong ke belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------
Untuk memudahkan tim penyusun materi Belajar Excel yang lebih sesuai kebutuhan member, silakan ungkapkan permasalahan yang kerap ditemui dalam menggunakan Excel sehari-hari atau hal-hal yang ingin dipelajari dalam jangka dekat ini. Mohon diprioritaskan dari yang sering ditemui sampai yang ingin dipelajari.
Isi sesuai kelompoknya (fitur-fitur, formula-formula tertentu yang masih membingungkan, otomasi atau pemrograman dalam Excel [Macro - VBA], hal lainnya yang membuat Anda kesulitan dalam mempelajari Excel).
Boleh mengisi berulang kali untuk menambah uneg-uneg yang ingin diungkapkan.
Link untuk menuangkan seluruh uneg-uneg tersebut ada di :
http://tech.groups.yahoo.com/group/belajar-excel/database?method=addRecord&tbl=3
=====================================================================
Langkah kecil Anda dalam mengisi database bisa menjadi langkah pertama yang bermanfaat besar untuk kita semua.
=====================================================================
---------------------------------------------------------------------
bergabung ke milis (subscribe), kirim mail kosong ke:
belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke:
belajar-excel@yahoogroups.com
berkunjung ke web milis
http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran
http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di :
http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe):
kirim mail kosong ke belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------
Tidak ada komentar:
Posting Komentar