質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

5回答

1525閲覧

VBScriptの配列について

退会済みユーザー

退会済みユーザー

総合スコア0

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2020/02/07 02:21

vb
初心者です。VBScriptでの配列について質問です。
配列をたとえばa(256)のサイズで用意し、
a(0)=1、a(1)=2、a(2)=4まで入れたとします。
この配列の中でどこまで数が入っているのかを表示する方法を教えていただきたいです。
UBoundを使うのかと思っていましたがそれだと256の部分しか出てこず、行き詰まってしまいました。ご教授頂けますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/02/07 02:31

何のために必要なのでしょうか?
Zuishin

2020/02/07 03:15 編集

この質問は前の質問と同じです。既にベストアンサーが選ばれています。 > データを格納した最大添え字を変数で管理してください。
Zuishin

2020/02/07 02:40

あなたのしたいことは「スタックを作成すること」ですが、それを理解していますか?
Y.H.

2020/02/07 02:52

a(0)=1、a(1)=2、a(2)=4、a(100)=101 と設定した場合は100 ? それとも入れた個数の4 ?
退会済みユーザー

退会済みユーザー

2020/02/07 04:04

そうですね、同じような質問になってしまいました。 引数分が欲しいのであれば動的配列を宣言し、引数を変数としてReDimでサイズを決定、という流れになるのでしょうか。
退会済みユーザー

退会済みユーザー

2020/02/07 04:05

a(2)の2がわかるような書き方があれば、と思いました。
Zuishin

2020/02/07 04:06

同じ「ような」ではありません。全く同じ質問です。
退会済みユーザー

退会済みユーザー

2020/02/07 04:08

すみません。
guest

回答5

0

スタックを作りたかったのでは?

この配列の中でどこまで数が入っているのか

という言葉の意味をぼんやりとではなく厳密に考えましょう。
スタックだと、何度も同じ位置の変数を書き換えますよ。

「この配列の中で、どこがスタック先頭なのか?」は、自分で管理するしか無いです。

投稿2020/02/07 03:42

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/07 03:58

スタックを作りたくて、配列がどこまであるのかがわかればそれの上に乗せたりそれを取り出したりの作業がやりやすいかなと考えたのですが、自分で先頭を管理する方法が調べてもわからず…。 Redim Preserveで今までの要素を残しつつ増やす、減らすをしていくのでしょうか? それと、参考書の中にあったdictionaryオブジェクトであれば要素数の取得、要素の追加削除がやりやすいかなと思ったのですがこれは応用は効かないのでしょうか。
Zuishin

2020/02/07 04:04

スタックを使いたいなら Stack を使えばいいだけで、わざわざそれを避けて Dictionary を使うなど正気を疑います。
ttyp03

2020/02/07 04:06

前の質問がどうであれ、この質問はあくまでも「配列内のデータ数(もしくは最後尾)を得る方法」についての質問のはずです。 スタック云々の話は関係ないのでは。>otnさん 間違った質問であったなら削除依頼をするとかしてください(回答ついちゃったから出来ないのかな)>質問者さん
guest

0

何のためなのか分からないけど動的配列を使ってみるのは?

基本的に、サイズを決めちゃったらどこまで使っているのか?というのは分かりません。

投稿2020/02/07 02:53

yoorwm

総合スコア1305

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

varTypeで調べようと思えば調べられそうですが

投稿2020/02/07 02:53

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/02/07 02:53

Dim a(256) a(2) = 0 a(3) = 100 a(4) = "abc" MsgBox VarType(a(1)) //0=空 MsgBox VarType(a(2)) //2=整数 MsgBox VarType(a(3)) //2=整数 MsgBox VarType(a(4)) //8=文字列 MsgBox VarType(a(5)) //0=空
yambejp

2020/02/07 02:54

a(1)のように指定していないところも空になるので 「どこまで」というのが「4」までであっても その中で抜けがある場合があります
guest

0

配列の中身をチェックしてカウントするしかないと思います。
未初期化の変数は値が""もしくはIsEmpty関数で判定できます。
以下サンプルです。
ループ内のIf文行はどちらかを使用してください。

vbs

1Dim a(256) 2a(0) = 1 3a(1) = 2 4a(2) = 3 5 6Dim cnt 7Dim a2 8cnt = 0 9For Each a2 In a 10 If a2 <> "" Then cnt = cnt + 1 11 If Not IsEmpty(a2) Then cnt = cnt + 1 12Next 13 14wscript.echo cnt 15

投稿2020/02/07 02:46

ttyp03

総合スコア17000

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/02/07 02:47

あ、「どこまで」という意味合いだと少し違いますね。 まあ、応用すればできるでしょう。
guest

0

UBound を使用し、配列の要素数を求めればよいだけでは?

参考

投稿2020/02/07 02:24

編集2020/02/07 02:25
nanami12

総合スコア1015

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問