Saya tidak meminta bantuan dengan skrip apa pun, tetapi pertanyaan saya adalah untuk klarifikasi. Akhir-akhir ini saya telah melakukan banyak skrip VB di Excel, jadi saya benar-benar merujuk ke Excel dalam pertanyaan ini. Apa perbedaan antara .text, .value, dan .value2? Seperti kapan saya harus menggunakan target.text, target.value, dan target.value2? Saya tidak pernah menggunakan opsi value2 tetapi masih ingin tahu untuk apa itu digunakan.
Kadang-kadang jika saya menggunakan .text itu memberi saya kesalahan dan saya perlu menggunakan .value ketika saya hanya memeriksa atau memanipulasi teks di dalam sel. Lalu kadang-kadang ketika saya pikir saya harus menggunakan. Nilai saya mendapatkan kesalahan dan saya harus menggunakan .text. Biasanya itu menerima baik atau tanpa masalah, tetapi kadang-kadang itu membuat perbedaan. Saya tahu harus ada logika untuk ini, tetapi saya tidak bisa memahaminya.
Saya juga menemukan bahwa jika Anda membiarkannya sebagai target tanpa menentukan .text atau .value pada awalnya akan berfungsi, tetapi kemudian sesuatu yang dilakukan seseorang pada akhirnya akan menyebabkan skrip salah, jadi selalu yang terbaik untuk menggunakan .sesuatu di atasnya . Saya kira apa yang saya tanyakan adalah apakah seseorang dapat memberi saya semacam pedoman, aturan praktis, bagaimana cara menggunakan masing-masing dengan benar dan kapan perlu digunakan.
Terima kasih untuk penjelasannya kawan. Saya agak mengerti lebih baik. Keduanya adalah penjelasan yang bagus. Di bawah ini adalah contoh kecil dari beberapa kode saya yang berfungsi. Saya pikir itu harus menjadi target.text, tetapi itu akan kesalahan sehingga ketika saya menggunakan target.value itu berhasil.
If LCase(Target.Value) = LCase("HLO") And Target.Column = 15 Then
Target.Value = "Higher Level Outage"
End If
Saya masih sedikit bingung karena ketika saya memikirkan nilai atau value2, terutama setelah jawaban Anda yang Anda berikan, saya pikir mereka hanya boleh digunakan untuk angka. Namun, dalam contoh saya, saya berbicara tentang teks saja, yang banyak mengacu pada naskah saya (teks dalam sel, lebih dari angka).
Jawaban:
.Text
memberi Anda string yang mewakili apa yang ditampilkan di layar untuk sel. Menggunakan .Text biasanya ide yang buruk karena Anda bisa mendapatkan ####.Value2
memberi Anda nilai dasar sel (bisa kosong, string, kesalahan, angka (ganda) atau boolean).Value
memberi Anda sama dengan .Value2 kecuali jika sel diformat sebagai mata uang atau tanggal itu memberi Anda mata uang VBA (yang dapat memotong tempat desimal) atau tanggal VBA.Menggunakan .Value atau .Text biasanya ide yang buruk karena Anda mungkin tidak mendapatkan nilai nyata dari sel, dan mereka lebih lambat dari .Value2
Untuk diskusi yang lebih luas lihat Teks saya vs Nilai vs Value2
sumber
Date
aDouble
(menggunakan.Value2
) ketika yang Anda butuhkan adalah aDate
. Bukankah.Value
seharusnya lebih disukai daripada.Value2
ketika Anda melihatDate
nilai? Artikel yang ditautkan tidak memperjelas hal itu. Performa karena tidak ada konversi? Tentu, tetapi kemudian jika kode VBA Anda bekerja denganDate
, maka Anda akan kehilangan keunggulan melakukan konversi sendiri, secara implisit atau eksplisit ... (konteks - jangan ragu untukFormat$(Range.Value2, Range.NumberFormat)
.Kecuali formulir jawaban pertama Batsyeba, kecuali informasi MSDN untuk:
.Value
.Value2
.Text
Anda bisa menganalisis tabel ini untuk lebih memahami perbedaan antara properti yang dianalisis.
sumber
.Value
sebagai properti standar sepanjang waktu - untuk teks dan angka. Gunakan.Value2
ketika Anda memikirkan tanggal dan beberapa angka. Dan gunakan.Text
selalu jika Anda perlu memformat apa pun yang Anda miliki di sel / rentang. Jadi, contoh pertanyaan Anda jika benar!target.Value
akan memberi AndaVariant
tipetarget.Value2
akan memberi AndaVariant
tipe juga tetapiDate
dipaksa untuk aDouble
target.Text
mencoba untuk memaksa keString
dan akan gagal jika yang mendasarinyaVariant
tidak dapat dipaksakan untuk suatuString
jenisHal paling aman untuk dilakukan adalah sesuatu seperti
Dan periksa jenis varian yang digunakan
VBA.VarType(v)
sebelum Anda mencoba paksaan eksplisit.sumber
Mengenai konvensi dalam C #. Katakanlah Anda sedang membaca sel yang berisi tanggal, misalnya 2014-10-22.
Ketika menggunakan:
.Text
, Anda akan mendapatkan representasi tanggal yang diformat, seperti yang terlihat di buku kerja di layar:2014-10-22 . Jenis properti ini selalu
string
tetapi tidak selalu memberikan hasil yang memuaskan..Value
, kompiler mencoba mengubah tanggal menjadiDateTime
objek: {2014-10-22 00:00:00} Kemungkinan besar hanya berguna saat membaca tanggal..Value2
, memberi Anda nilai sel yang nyata dan mendasar. Dalam hal tanggal, ini adalah serial tanggal: 41934 . Properti ini dapat memiliki tipe yang berbeda tergantung pada konten sel. Untuk serial serial, jenisnya adalahdouble
.Jadi, Anda dapat mengambil dan menyimpan nilai sel di salah satu
dynamic
,var
atauobject
tetapi perhatikan bahwa nilainya akan selalu memiliki semacam jenis bawaan yang harus Anda tindak lanjuti.sumber
. Teks adalah nilai ditampilkan sel yang diformat; .Nilai adalah nilai sel yang mungkin ditambah dengan tanggal atau indikator mata uang; .Value2 adalah nilai dasar mentah yang dilucuti dari setiap informasi asing.
Jika Anda memproses nilai sel maka membaca .Value2 mentah sedikit lebih cepat dari .Value atau .Text. Jika Anda menemukan kesalahan maka. Teks akan mengembalikan sesuatu seperti
#N/A
sebagai teks dan dapat dibandingkan dengan string sementara. Nilai dan. Nilai2 akan tersedak membandingkan nilai yang dikembalikan ke string. Jika Anda memiliki beberapa pemformatan sel khusus yang diterapkan pada data Anda, maka .Teks mungkin merupakan pilihan yang lebih baik saat membuat laporan.sumber
Karena penasaran, saya ingin melihat bagaimana
Value
kinerja melawanValue2
. Setelah sekitar 12 percobaan proses serupa, saya tidak bisa melihat perbedaan kecepatan yang signifikan jadi saya selalu merekomendasikan untuk menggunakannyaValue
. Saya menggunakan kode di bawah ini untuk menjalankan beberapa tes dengan berbagai rentang.Jika ada yang melihat sesuatu yang bertentangan dengan kinerja, silakan posting.
sumber