0, 回答 ないのでしょうか? CURDIRでは上手い方法が見つかりませんでした。, こんばんは。   if 0<>strComp("",Trim(strLine)) then 1次元配列のarrLine(0)=001、(1)=500、(2)=700と入ったデータを Redim Preserve arrshop(i+1) 1行目のヘッダーを読み飛ばし、2行目のデータから1行ずつ読取、","でsplitを用いてまず1次配列に格納しています。   tmp(0, 0) = "test3" 環境 arrshop = Array(arrLines,i) 2次元配列arrshopに順次保存?したいのです。 teratailを一緒に作りたいエンジニア, ' myArrayListに追加したものとは別に"System.Collections.ArrayList"を生成する.   For Each ary In test CSVファイルの中身は、サンプルで Public FirstName    test.Add tmp そういう経験の積み重ねが土台を作る一つの要因になるのだと私は思っています。   Set test = New Collection 003,1200,90 もしくはこれぐらいしか対処方法はないのでは? 前提・実現したいこと私、VBScriptでArrayListを使い2×2の二次元配列を作ろうとしておりますが、実行時の処理が思い通りにいかず困っています。 原因または解決策をご存じの方はいらっしゃいませんか。 ただ今後、要素が増える可能性がございますので、要素が増えても対応できる処理 でも正常に動きます。 On Error Resume Next メモリ:8GB, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, 上記の部分を以下の二つどちらかに変えれば、動作としては意図したものになるはずです(実際起きていることはそれぞれ違います)。, パターン1の場合、myArrayListの中にはVariant型配列が入っています。 ■参考URL 一番外側の "のペアが 文字列としての"になります 教えてください。VBのコレクション配列はVBSにはあるのでしょうか?クラスオブジェクトをコレクション配列に入れたいのですが....例:Class myclass : :End ClassSub Main() dim col as Collection dim mycl mycl = new mycla Set test = New Collection   test.Add tmp   Dim tmp(0, 9) As String Set Class1 = new myClass 7.配列のコピー 配列のコピーを作成する場合は注意が必要です。数値や文字列など変数と同じ感覚でコピーを作成すると思わぬ現象が発生します。次のコードを実行すると何が表示されるか考えてみてく …   Next ループで処理をしたいと考えています。 D:\2005年度\予算.xls ・条件分岐やループの内側か外側かは関係ない(内側で宣言した変数を外側で参照できる) Dim が入っているので、変数に対してのことだと思います。以下のように3つ並べてみて、その違いが分かるはずです。Dim と Public は、基本的には同じになります。ところが、Private は、呼び出せません。ただし、Function や Sub につけるキーワードは意味が変わります。 方法が分かりません。 クラスオブジェクトをコレクション配列に入れたいのですが.... ・プロシージャのネスト時に参照可能な変数は、グローバル変数と自プロシージャ内で宣言された変数のみ(=自分を呼び出した親プロシージャ内の変数を参照することはできない)   end if お客様の許可なしに外部サービスに投稿することはございませんのでご安心ください。, VB .NET または VB2005 でカスタム コレクション クラスを作成するには, コレクターの方に聞きたいです、自分のコレクションを他の人に見てもらいたい、また自分と同じコレクション, ps2で言うカプコンクラシックスコレクションみたいなのはps4にありますか?会ったら教えてください. next Sub Sample() End Sub, Dim、Private、Publicの違いを教えてください。   Dim test As Collection End Sub, こんな感じですかね。 の代わりに "ab"cが欲しいなら """ab""c" 元のものをいじっても、他に影響は出ません。   Worksheets.Add Before:=Worksheets(1) col = new myClass VBScript Split コマンドを使用して、CSV ファイルから 1 行を読み取り、その行内の各要素を配列に格納するスクリプトを示します。 今後、three,four...と増やす訳にはいきませんので解決には至りませんでした。, WSH の バージョン :5.812 LastName = lname 例えば--- が入っているかどうか検査したいのですがどうしたらいいでしょうか。 Next i "をあらわすには "で括る必要が生じます 0, 【募集】 Sub Sample1() #プロシージャ≒「ファンクション」です。 私、VBScriptでArrayListを使い2×2の二次元配列を作ろうとしておりますが、実行時の処理が思い通りにいかず困っています。, ただ今後、要素が増える可能性がございますので、要素が増えても対応できる処理にしようと考えております。 a=a*0.1 a = InputBox("MsgBoxに表示する値を入れてください。", , "test") Dim a As Stringの部分を消すと、問題なく作動します。 Array関数が上手くないような気もします・・・。 Sub AddName(fname, lname, gnr)    "アクティブブックのパス: " & b & Chr(13) & _ まず配列コピーで絶対してはいけないng例を紹介します。 そのng例とは 配列を別の変数にそのまま代入してしまう こと. Genr = gnr arrshop(i)=arrLines   For Each ary In test これで答えになっているでしょうか??, 少し厳しいかもしれませんが、ご自分でサンプルコードを書いて実行してみましたか? MsgBox a   arrLine = split(strLine , ",") i = i + 1 通常の総理 c = Application.DefaultFilePath 結論から言うと以下の通りかと思っています。 参考サイトやヒントだけでも良いので教えて下さい。, 少し厳しいかもしれませんが、ご自分でサンプルコードを書いて実行してみましたか? 例:   tmp(0, 0) = "test" ---------------------------------------------- On Error Resume Next になります(正確には違うもの、他の言語だと違う場合もありますが簡易説明のため触れません)。, 値型のものは他の変数に代入したり、myArrayList.Addをすると、コピーされます。   tmp(0, 1) = "56" C:\経理\予算.xls   Next それと最初にiは0か1にでも初期化してから使う事をお勧めします。, お世話になります。 Sub Main() 2次元配列arrshopに順次保存?したいのです。 'このブックのパス   Dim ary As Variant msgbox "a= " & a & " typename= " & typename(a) Dim a As Workbook   test.Add tmp ・プロシージャの引数がグローバル変数と同名の場合、引数が優先される     Range(Cells(1, i * 2), Cells(10, i * 2)) = WorksheetFunction.Transpose(ary) Excel97 でも、同じですね。以下で試してみてください。 msgbox "a= " & a & " typename= " & typename(a) End Sub 一番下の 2006/1 からです。最初に、「テキスト ファイルのすべての空白行を削除する方法はありますか?」というスタートからでは、VBSは手が出ない人も多いと思います。Win XPになって、VBScript のステータスが変わりました。WMI(Microsoft Windows Management Instrumentation)が入ってきたからです。     Debug.Print ary(0, 0) msgbox "a= " & a & " typename= " & typename(a) a = ThisWorkbook.Path    "カレントディレクトリ : " & d & Chr(13) Private LastName 配列をコピーするときにやりがちなng例. d = CurDir msgbox "a= " & a & " typename= " & typename(a) test.Add tmp どのように使え分けるのですか?, VBSで、どの程度、使いこなせられるかにもよりますね。 Do until .AtEndOfStream   For i = 1 To test.Count どこで宣言すれば、どこまで有効か知りたい。 If 除外条件 Then   test.Add tmp   arrshop = Array(arrLines,i) a=a*100000 1 / クリップ MsgBox(class1.LastName) Dim Genr ・プロシージャ内(←ネストレベルは関係ない)で宣言された変数は当該プロシージャ内のみで有効 test.Add tmp ----------------------------------------- EXCEL97ファイルがあります。   Dim test As Collection パターン2の場合、myArrayListの中にはSystem.Collections.ArrayListが入っています。, VBA / VBScript に限定して言うと、 ・プロシージャ内(←ネストレベルは関係ない)...続きを読む, エスケープといった考えが VBSではなかったように思います 'アクティブブックのパス --------- tmp(0, 1) = "tttt" If a <> nothing then ←この部分が分からない。このままだとエラー。 Dim tmp(0, 9) As String shop,price,sales 001,500,700 Class myclass loop   tmp(0, 1) = "zzz"   tmp(0, 0) = "test" dim a   カレントフォルダ名 Setを付ける必要があるもの→オブジェクトは参照型 かく言う私自身、VBScriptには明るくないので、正しいかどうかわかりませんが、 かく言う私自身、VBScriptには明るくないので、正しいかどうかわかりませんが、 For i = 1 To 10 msgbox typename(a) CSVファイルの中身は、サンプルで 1行目のヘッダーを読み飛ばし、2行目のデータから1行ずつ読取、","でsplitを用いてまず1次配列に格納しています。   Dim i As Integer   Set test = New Collection   tmp(0, 1) = "56" もしも検証できない状況にあるのでしたら、ごめんなさい。 ローカルウインドウで確認すると、値が表示されているので、 test に 2次元配列は追加されているようです。 Dim が入っているので、変数に対してのことだと思います。以下のように3つ並べてみて、その違いが分かるはずです。Dim と Public は、基本的には同じになります。ところが、Private は、呼び出せません。ただし、Function や Sub につけるキーワードは意味が変わります。 一般のVB系の言語と違って、それらのステートメントは出会うことは少ないです。 VBAは、MS-Officeに備え付けられたもので、VBEditor 上でコーディングするものですが、自動的にスペルチェックや構文チェック...続きを読む, 2次元配列を作成し、コレクションにAddし、 'カレントディレクトリ End Sub, VBSで、 一般のVB系の言語と違って、それらのステートメントは出会うことは少ないです。 : dim arrshop '一次元配列になった要素を2次元配列として格納 ■結論 myclass.xxx = xxxx Micorosoft の「Hey, Scripting Guy!」(参照URL)を読んでみるとよいですね。    "デフォルトパス    : " & c & Chr(13) & _   For i = 1 To test.Count Property Get FullName Fullname = FirstName & " " & LastName & " " & Genr でやってみてください。 この後 test の中の2次元配列の値をループで取り出したいです。 Else 取り出して、セルに代入する予定です。 Public FirstName   tmp(0, 1) = "zzz" a= a & "b"   Next   test.Add tmp dim mycl Dim a 'Excelで設定されたデフォルトパス と文章を作って、test.vbsで保存しました。 a=1 024,,18 という並びになっています。   tmp(0, 0) = "test3" Addしたものの、取り出す方法がわかりません。 http://www.google.com/search?q=vbscript+%E5%A4%89%E6%95%B0+%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97 もっと基礎からなら、「Windows Script Host Laboratory」の牟田口さんのサイトを見てみるとよいです。http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/ 私の行った手順は以下です。, ・oneArrayListを使い回さずに、新たにtwoArrayListを追加した場合、処理はうまくいきますが、 4 / クリップ Next i (イメージはファイルのコピー), 対して参照型は、他の変数に代入したり、myArrayList.Addをしてもコピーされず、同じものを指しています。 エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト   Dim ary As Variant End If (イメージはショートカットの作成), 今回使用しているSystem.Collections.ArrayListはオブジェクトなので参照型です。, そのため、今回の質問のコードだとoneArrayListは一つしかないので たとえば "abc" といった内容なら """abc""" といったリテラルになります VBAで Property Get FullN...続きを読む, ※各種外部サービスのアカウントをお持ちの方はこちらから簡単に登録できます。 for の先頭に戻りたいのではなく、 Next の直前に飛びたいのですよね? MsgBox(Err.Description) End Property mycl = new myclass     Debug.Print ary(0, 0)...続きを読む, 現在VBScriptでCSVファイルを1行ずつ読み取って、2次元配列に格納するプログラムを作成しています。 Sub test() ■結論 MsgBox(class1.Genr) 動くか検証してないですが… 003,1200,90 msgbox arrshop(2)(0) と指定すると「003」出るようにしたいです。 例えば次のように配列をコピーしている(つもり)のコード例があるとしましょう。 VB.net 等の「 Continue For」に当たるものは、VBAに End Sub 何卒宜しくお願いします。, Continue For は昔の VB6 までに物には実装されていませんね VB6 使いの私は知らなかった http://www.keynus.co.jp/~uhara/html/vbscript/16.htm 以上簡単ですが、myclをコレクション配列に格納したいのですが、, 「配列 VB」に関するQ&A: VBScriptの配列は、要素数を指定しないと使えないのでしょうか?, 「配列 クラス」に関するQ&A: クラス内での二次元配列への値の代入について, 「配列 VB」に関するQ&A: エクセルでチェックボックスをクリックしたらセルに数値を入力&消去, ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!, 皆様のお知恵を拝借させてください。 MsgBox(class1.FirstName) b = ActiveWorkbook.Path だから、VBAで基礎力を付けてからですね。 を取得する事は可能でしょうか?     Debug.Print ary(0, 1)   tmp(0, 1) = "tttt" If Not a Is Nothing Then, 変数のスコープについて詳しく教えて下さい。 デバッガー:使っておりません、メモ帳で作成して実行しています。 Private LastName そういう経験の積み重ねが土台を作る一つの要因になるのだと私は思っています。 tmp(0, 0) = "test2" MsgBox a ntLineNum = intLineNum + 1 Dim Genr Next_no_mae:     Range(Cells(i, 1), Cells(i, 10)) = test(i) OS:Windows 10 じゃダメですか?   Dim i As Integer セル範囲をVariant型変数に入れる事で、配列を作成することができます。また、配列をセル範囲にまとめて出力する事も出来ます。これは、マクロVBAを高速処理したい時の必須テクニックになります、マクロの処理が遅い場合は、このテクニックが使えないか検討してください。 End if 特に、ファンクションの中のファンクションとかです。 dim ntLineNum '行数のカウント エクセル2003 といった具合になります, EXCELファイルのカレントフォルダを取得するには? tmp(0, 0) = "test" dim arrLine '","で区切った要素を持つ一次元配列   Dim test As Collection ・グローバル領域(=いかなるプロシージャにも所属しない領域)で宣言された変数は、どこからでも参照可 a"b"cがほしいなら "a""b""c" myArrayListの1個目と2個目には同じものが入っていることになり、     ary = test(i) '技術評論社 ポケットリファレンス『VBScript』p.42を参考, VBSで、どの程度、使いこなせられるかにもよりますね。