Bagaimana cara mengubah nilai integer "45" menjadi nilai string "45" di Excel VBA?
vba
string
type-conversion
integer
Ada apa
sumber
sumber
CStr(45)
, tepatnya.CStr(CDbl(***))
7
menjadi007
. Anda mungkin juga ingin menentukan jumlah desimal atau menyertakan ribuan pemisah. Jika perincian ini penting bagi Anda: excelfunctions.net/vba-format-function.htmlCoba fungsi CStr ()
sumber
Sering kali, Anda tidak perlu "bertobat"; VBA akan melakukan konversi tipe implisit yang aman untuk Anda, tanpa menggunakan konverter seperti
CStr
.Kode di bawah ini berfungsi tanpa masalah, karena variabelnya adalah Tipe String, dan konversi tipe implisit dilakukan untuk Anda secara otomatis!
Hasil:
Anda bahkan tidak harus mendapatkan kemewahan itu, ini juga berfungsi:
Satu-satunya waktu Anda AKAN perlu mengkonversi adalah ketika variabel Type ambigu (misalnya, Jenis Varian, atau Cell
Value
(yang merupakan Variant)).Meskipun begitu, Anda tidak harus menggunakan
CStr
fungsi jika Anda menambahkan variabel String atau konstanta. Seperti ini:Jadi, sungguh, satu-satunya case langka adalah ketika Anda benar-benar ingin menyimpan nilai integer, ke dalam varian atau nilai Cell, ketika tidak juga menggabungkan dengan string lain (yang merupakan case samping yang cukup langka, saya dapat menambahkan):
sumber
Option Base 1
, pengetikan implisit denganDef[Type]
(anak laki-laki yang jahat!), Implisit ... Anda mendapatkannya - satu-satunya hal tersirat baik di VBA adalah sintaks panggilan implisit yang membuat eksplisitCall
usang.Dalam kasus saya, fungsi CString tidak ditemukan. Tetapi menambahkan string kosong ke nilai juga berfungsi.
sumber
CString
, yang merupakan fungsi VB.NET. Menggabungkan string kosong literal untuk membuat string adalah metode konversi yang cukup lemah. GunakanCStr
untuk konversi jenis eksplisit - ini adalah konversi tipe implisit dan menaikkan alis siapa pun yang membaca kode itu. Maaf saya menemukan jawaban ini sangat terlambat setelah diposting, saya berharap saya bisa menurunkannya lebih awal.Jika string yang Anda tarik adalah bilangan heksa seperti E01, maka Excel akan menerjemahkannya sebagai 0 bahkan jika Anda menggunakan fungsi CStr, dan bahkan jika Anda pertama kali menyimpannya dalam tipe variabel String. Salah satu cara mengatasi masalah ini adalah dengan menambahkan 'ke awal nilai.
Misalnya, saat menarik nilai dari tabel Word, dan membawanya ke Excel:
sumber
Cara terpendek tanpa mendeklarasikan variabel adalah dengan Tipe Petunjuk :
Ini tidak akan dikompilasi dengan
Option Explicit
. Jenis tidak akanVariant
tetapiString
danInteger
sumber
Cara lain untuk melakukannya adalah dengan menggabungkan dua bagian yang diurai dari nilai numerik bersama-sama:
Saya telah menemukan kesuksesan yang lebih baik daripada ini
CStr()
karenaCStr()
sepertinya tidak mengubah angka desimal yang berasal dari varian dalam pengalaman saya.sumber
Jika Anda memiliki nilai integer yang valid dan persyaratan Anda adalah untuk membandingkan nilai, Anda bisa melanjutkan dengan perbandingan seperti yang terlihat di bawah ini.
sumber
Jawaban yang diterima baik untuk angka yang lebih kecil, yang paling penting saat Anda mengambil data dari lembar excel. karena angka yang lebih besar akan secara otomatis dikonversi ke angka ilmiah yaitu e + 10.
Jadi saya pikir ini akan memberi Anda jawaban yang lebih umum. Saya tidak memeriksa apakah ada kejatuhan atau tidak.
ini akan berfungsi untuk e + angka yang dikonversi! karena hanya
CStr(7.7685099559e+11)
akan ditampilkan sebagai "7,7685099559e + 11" tidak seperti yang diharapkan: "776850995590" Jadi saya lebih suka mengatakan jawaban saya akan hasil yang lebih umum.Salam, M.
sumber
Referensi: MrExcel.com - Konversi angka menjadi teks dengan VBA
sumber