ভিবিএতে স্ট্রিং অ্যারে ঘোষণা এবং সূচনা করুন


126

এটি অন্য স্ট্যাক ওভারফ্লো পোস্ট অনুসারে কাজ করা উচিত তবে এটি নয়:

Dim arrWsNames As String() = {"Value1", "Value2"}

কেউ কি আমাকে জানাতে পারে ভুল কি?


33
দ্রষ্টব্য: কোঁকড়া ধনুর্বন্ধনী সিনট্যাক্স ভিবিএর মধ্যে কাজ করে না, এটি ভিবি.এনইটি-র জন্য ডিজাইন করা হয়েছে। আপনার নিজের বিড়ম্বনার জন্য, এই দুটি পরিবেশকে বিভ্রান্ত করবেন না।
Boomer57

2
আপনি যদি এক্সেল ব্যবহার করেন (এবং আপনি একটি ভেরিয়েন্ট অ্যারেতে সামগ্রী হন) তবে আপনি ব্যবহার করতে পারেনDim x() As Variant: x = [{"Value1", "Value2"}]
থান্ডারফ্রেম

1
যে কেউ এই মন্তব্যটি দেখছেন, তার প্রায় দুই বছর পরে (আমার মত)। দেখে মনে হচ্ছে Dim x() As Variant: x = [{"Value1", "Value2"}] আপনি যদি ভেরিয়েবল ব্যবহার করে থাকেন তবে ভিবিএ / এক্সেল সিনট্যাক্স পছন্দ করে না ... অর্থাৎ যদি v1 = "Value1"; v2 = "Value2", তবে x = [{v1, v2}]একটি ত্রুটি তৈরি x = [{"Value1", "Value2"}]করবে , তবে তা হবে না।
চিপ আর।

উত্তর:


169

এটা চেষ্টা কর:

Dim myarray As Variant
myarray = Array("Cat", "Dog", "Rabbit")

20
প্রযুক্তিগতভাবে স্ট্রিং অ্যারে নয়, একটি বৈকল্পিক অ্যারে তৈরি করে। অবশ্যই ভেরিয়েন্ট অ্যারে কেবল স্ট্রিংগুলির অ্যারে হতে পারে তবে এই পদ্ধতিটি নন-স্ট্রিং ডেটা ধরণের ক্ষেত্রেও অনুমতি দেবে:myArray = Array("A", "B", 12345, "D"...)
ডেভিড জেমেন্স

10
দিম মাইস্ট্রিংআরে () স্ট্রিং হিসাবে কী ... মাইস্ট্রিংআরে = অ্যারে ("বিড়াল", "কুকুর", "খরগোশ")। রূপ - ইয়াক!
আন্দিজ

30
যদি আপনি এটি একটি লাইনে রাখতে চান, তবে আপনি ঘোষণার পরে কোলনটি ব্যবহার করতে পারেন: Dim arrWsNames() As String: arrWsNames = Split("Value1,Value2", ",") উপরের মন্তব্য থেকে শুরু করা আমার পক্ষে কাজ করে না, কারণ অ্যারে () স্ট্রিংস নয়
বরং ভেরিয়েন্টের

6
না 1 হিসাবে একটি ভাল উত্তর) এটি একটি বৈকল্পিক এর ধারণকারী একটি অ্যারের এবং 2) রূপগুলো VBA মধ্যে ধীরতম ডাটা টাইপ হয়
stifin

4
@ সিটিফিন এবং ৩) ভিবিএতে স্ট্রিং অ্যারে প্রারম্ভক নেই। তবে আপনি উদাহরণস্বরূপ স্প্লিট ব্যবহার করতে পারেন।
এল্ডার আগালারভ

141

স্ট্রিং অ্যারের নির্দিষ্ট ক্ষেত্রে আপনি বিভাজন অ্যারের পরিবর্তে স্ট্রিং অ্যারেটি ফেরত দেওয়ার কারণে আপনি বিভক্ত ফাংশনটি ব্যবহার করে অ্যারের সূচনা করতে পারেন :

Dim arrWsNames() As String
arrWsNames = Split("Value1,Value2,Value3", ",")

এটি আপনাকে ভেরিয়েন্ট ডেটা টাইপ ব্যবহার এড়াতে এবং এয়ারডাব্লুএসনামের জন্য পছন্দসই প্রকারটি সংরক্ষণ করতে দেয়।


3
এটি অবশ্যই অন্য ক্রিয়াকলাপগুলির সাথে এটি পরিষ্কার করে দেয়; আপনার স্মৃতি সংরক্ষণের কথা উল্লেখ না করা ...
জেসন আর। মিক

23

এখানে সমস্যাটি হ'ল আপনার অ্যারের দৈর্ঘ্য অপরিজ্ঞাত করা হয়েছে এবং অ্যারে স্পষ্টভাবে স্ট্রিং হিসাবে সংজ্ঞায়িত করা থাকলে এটি ভিবিএকে বিভ্রান্ত করে। ভেরিয়েন্টগুলি অবশ্য প্রয়োজন অনুসারে আকার পরিবর্তন করতে সক্ষম হবে বলে মনে হয় (কারণ তারা একগুচ্ছ স্মৃতিতে জড়িত থাকে এবং লোকেরা সাধারণত তাদের একগুচ্ছ কারণে এড়াতে পারে)।

নিম্নলিখিত কোডটি ঠিকঠাকভাবে কাজ করে, তবে অন্য কয়েকটি ভাষার তুলনায় এটি কিছুটা ম্যানুয়াল:

Dim SomeArray(3) As String

SomeArray(0) = "Zero"
SomeArray(1) = "One"
SomeArray(2) = "Two"
SomeArray(3) = "Three"

3
Dim myStringArray() As String
*code*
redim myStringArray(size_of_your_array)

তারপরে আপনি এর মতো স্থির কিছু করতে পারেন:

myStringArray = { item_1, item_2, ... }

বা এর মতো পুনরাবৃত্তির কিছু:

Dim x
For x = 0 To size_of_your_array
    myStringArray(x) = data_source(x).Name
Next x

3
Public Function _
CreateTextArrayFromSourceTexts(ParamArray SourceTexts() As Variant) As String()

    ReDim TargetTextArray(0 To UBound(SourceTexts)) As String

    For SourceTextsCellNumber = 0 To UBound(SourceTexts)
        TargetTextArray(SourceTextsCellNumber) = SourceTexts(SourceTextsCellNumber)
    Next SourceTextsCellNumber

    CreateTextArrayFromSourceTexts = TargetTextArray
End Function

উদাহরণ:

Dim TT() As String
TT = CreateTextArrayFromSourceTexts("hi", "bye", "hi", "bcd", "bYe")

ফলাফল:

TT(0)="hi"
TT(1)="bye"
TT(2)="hi"
TT(3)="bcd"
TT(4)="bYe"

উপভোগ

সম্পাদনা: আমি সদৃশ বৈশিষ্ট্যগুলি মুছে ফেলার বৈশিষ্ট্য সরিয়েছি এবং কোডটি আরও ছোট এবং ব্যবহারে সহজ করে তুলেছি।


1
এটির উত্তরটি হওয়া উচিত - যদিও শুরু করার মতো কোনও variant
নির্মাণই

-7

ব্যবহার

Dim myarray As Variant

কাজ করে কিন্তু

Dim myarray As String

আমি ভেরিয়েন্টে বসে থাকি না


8
এর কারণ হ'ল ম্যারিয়ার শেষে আপনার প্রথম বন্ধনী যুক্ত করা উচিত। প্রথম বন্ধনীগুলি ভিবিএকে জানতে দেয় যে এটি একটি অ্যারে। স্ট্রিং হিসাবে ডিমিং করা এটিকে কেবল স্ট্রিং-কেবল অ্যারে করে তোলে।
পারমানুব

আপনাকে অ্যারের সীমানা ঘোষণা করতে হবে। উভয় ক্ষেত্রেই একটি গতিশীল এরে: Dim MyArray() as String, অথবা একটি নির্দিষ্ট আকার এরে: Dim MyArray(1 to 10) as String
প্যাট্রিক লেপলেটিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.