উত্তর:
CStr(45)
আপনার যা দরকার তা হ'ল (কনভার্ট স্ট্রিং ফাংশন)
CStr(CDbl(***))
7
হয়ে 007
। আপনি দশমিকের সংখ্যা নির্দিষ্ট করতে বা হাজার বিভাজককেও অন্তর্ভুক্ত করতে চাইতে পারেন। যদি এই বিবরণগুলি আপনার কাছে গুরুত্বপূর্ণ: excelfunitions.net/vba-format-function.html
বেশিরভাগ সময়, আপনার "রূপান্তর" করার প্রয়োজন হবে না; VBA, আপনার জন্য নিরাপদ অন্তর্নিহিত টাইপ রূপান্তর করতে হবে ছাড়া মত কনভার্টার ব্যবহার CStr
।
নীচের কোডটি কোনও সমস্যা ছাড়াই কাজ করে, কারণ ভেরিয়েবল টাইপ স্ট্রিংয়ের, এবং অন্তর্নিহিত ধরণের রূপান্তর স্বয়ংক্রিয়ভাবে আপনার জন্য হয়ে যায়!
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
ফলাফল:
"আমার নম্বরটি: 0"
আপনি এমনকি অভিনব পেতে হবে না, এটি খুব কার্যকর:
Dim myString as String
myString = 77
"77"
শুধুমাত্র সময় আপনি রূপান্তর করতে প্রয়োজন হবে যখন পরিবর্তনশীল ধরণ দ্ব্যর্থক হয় (যেমন, প্রকার ভেরিয়েন্ট, অথবা একটি সেল-এর Value
(যা হয় ভেরিয়েন্ট))।
তারপরেও আপনাকে ব্যবহার করতে হবে না CStr
যদি অন্য স্ট্রিং ভেরিয়েবল বা ধ্রুবকের সাথে মিশ্রণ করেন তবে আপনাকে ফাংশন । এটার মত:
Sheet1.Range("A1").Value = "My favorite number is " & 7
"আমার প্রিয় নম্বরটি 7"
সুতরাং, সত্যই, একমাত্র বিরল কেস যখন আপনি সত্যিকার অর্থে একটি পূর্ণসংখ্যা মান, কোনও বৈকল্পিক বা সেল মানে সঞ্চয় করতে চান, যখন না অন্য স্ট্রিংয়ের সাথেও যৌগিক (যা একটি খুব বিরল দিকের ক্ষেত্রে আমি যুক্ত করতে পারি):
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = i
7
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = CStr(i)
"7"
Option Base 1
, অন্তর্নিহিত টাইপিং Def[Type]
(ছেলে যেটি খুব খারাপ!), অন্তর্নিহিত ... আপনি এটি পেয়েছেন - ভিবিএতে একমাত্র ভাল অন্তর্নিহিত জিনিস হ'ল অন্তর্নিহিত কল বাক্য গঠন যা সুস্পষ্টভাবে Call
অচল করে দেয়।
আমার ক্ষেত্রে, ফাংশন CString পাওয়া যায় নি। তবে মানটিতে একটি খালি স্ট্রিং যুক্ত করাও কাজ করে।
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
CString
বলেনি, এটি একটি ভিবি.এনইটি ফাংশন। একটি খালি স্ট্রিংকে আক্ষরিক স্ট্রিং তৈরি করা একটি লম্পট রূপান্তর পদ্ধতি। CStr
সুস্পষ্ট ধরণের রূপান্তরগুলির জন্য ব্যবহার করুন - এটি একটি অন্তর্নিহিত ধরণের রূপান্তর এবং কোডটি পড়ে যে কেউ ভ্রু উত্থাপন করে। দুঃখিত, আমি এই উত্তরটি পোস্ট হওয়ার পরে এত দেরিতে পেয়েছি, আমি আশা করি আমি এটির আগে অনেকটা নীচু করতে পারতাম।
আপনি যে স্ট্রিংটি টানছেন সেটি যদি E01 এর মতো কোনও হেক্স নম্বর হিসাবে দেখা যায় তবে এক্সেল এটিকে 0 হিসাবে অনুবাদ করবে এমনকি আপনি সিএসআরটি ফাংশনটি ব্যবহার করলেও এবং আপনি প্রথমে স্ট্রিং ভেরিয়েবল টাইপে জমা দিলেও। সমস্যাটির চারপাশের একটি উপায় হ'ল মানের শুরুতে 'যুক্ত করা।
উদাহরণস্বরূপ, যখন কোনও ওয়ার্ড টেবিলের বাইরে মানগুলি টানতে এবং সেগুলিকে এক্সেলে আনার সময়:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
ভেরিয়েবলটি না জানিয়ে সংক্ষিপ্ততম উপায় হ'ল টাইপ ইঙ্গিত সহ :
s$ = 123 ' s = "123"
i% = "123" ' i = 123
এটি সংকলন করবে না Option Explicit
। প্রকারগুলি Variant
কিন্তু হবে না String
এবংInteger
এটি করার আরেকটি উপায় হ'ল সংখ্যাসূচক মানের দুটি পার্সড বিভাগ একসাথে বিভক্ত করা:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
আমি এর চেয়ে আরও ভাল সাফল্য পেয়েছি CStr()
কারণ CStr()
আমার অভিজ্ঞতার রূপগুলি থেকে দশমিক সংখ্যা রূপান্তরিত হবে বলে মনে হয় না।
আপনার যদি একটি বৈধ পূর্ণসংখ্যার মান থাকে এবং মানগুলির তুলনা করা আপনার প্রয়োজন হয় তবে নীচের বর্ণনার তুলনায় আপনি কেবল তুলনা করে এগিয়ে যেতে পারেন।
Sub t()
Dim i As Integer
Dim s As String
' pass
i = 65
s = "65"
If i = s Then
MsgBox i
End If
' fail - Type Mismatch
i = 65
s = "A"
If i = s Then
MsgBox i
End If
End Sub
স্বীকৃত উত্তরটি ছোট সংখ্যার পক্ষে ভাল, সবচেয়ে গুরুত্বপূর্ণ আপনি যখন এক্সেল শিট থেকে ডেটা নিচ্ছেন। যেহেতু বড় সংখ্যাগুলি স্বয়ংক্রিয়ভাবে বৈজ্ঞানিক সংখ্যায় অর্থাৎ ই + 10 এ রূপান্তরিত হয়।
সুতরাং আমি মনে করি এটি আপনাকে আরও সাধারণ উত্তর দেবে। আমি এর কোন পতন আছে কিনা তা পরীক্ষা করে দেখিনি।
CStr(CDbl(#yourNumber#))
এটি ই + রূপান্তরিত সংখ্যার জন্য কাজ করবে! ন্যায়সঙ্গত হিসাবেCStr(7.7685099559e+11)
প্রত্যাশিত হিসাবে "7.7685099559e + 11" হিসাবে দেখানো হবে: "776850995590" সুতরাং আমি বরং আমার উত্তর আরও জেনেরিক ফলাফল হবে বলে বলতে চাই।
শুভেচ্ছা, এম
Sub NumToText(ByRef sRng As String, Optional ByVal WS As Worksheet)
'---Converting visible range form Numbers to Text
Dim Temp As Double
Dim vRng As Range
Dim Cel As Object
If WS Is Nothing Then Set WS = ActiveSheet
Set vRng = WS.Range(sRng).SpecialCells(xlCellTypeVisible)
For Each Cel In vRng
If Not IsEmpty(Cel.Value) And IsNumeric(Cel.Value) Then
Temp = Cel.Value
Cel.ClearContents
Cel.NumberFormat = "@"
Cel.Value = CStr(Temp)
End If
Next Cel
End Sub
Sub Macro1()
Call NumToText("A2:A100", ActiveSheet)
End Sub
রেফার: মিস্টার এক্সেল ডটকম - ভিবিএর সাহায্যে পাঠ্যগুলিতে নম্বর রূপান্তর করুন
CStr(45)
, সম্পর্ন নিভূল হতে পারে.