
こちらの識者の方々にはいつもお世話になっています。
VBAの質問です。
環境は下記になります。
OS=windowsXP SP3
Office=Excel2003(11.8347.8403) SP3
タイトルが正確にやりたいことを表現できているのかいささか疑問なので補足します。
Sub test1()
Dim oDict As Object
Dim i As String
Const Dest01 As String = "C:\aaa\"
i = "01"
Set oDict = CreateObject("Scripting.Dictionary")
oDict(i) = "Dest" & i
MsgBox oDict(i)
Set oDict = Nothing
End Sub
上記のようなコードで、msgboxで ”C:\aaa\”という文字列を返してほしいのですが、"Dest01"の文字列が返ってきます。
上記ではDest01しか指定していませんが、実際のコードではDest80ぐらいまで定数があり、いずれの定数のフォルダも共通性がない状態になっています。
これをFor next文でiをまわして、Dest01から順番に保存していきたい。というのがやりたいことです。
上記のような場合、どのようなコードが適していますでしょうか。
Dictionaryオブジェクトについては、必ず使いたいわけではありません。
質問に不備不足等ございましたらご指摘ください。
ご面倒お掛けしますがよろしくお願いします。
No.1ベストアンサー
- 回答日時:
質問の意味が読めないですが、どうやら定数を呼び出したいということらしいのですが、「定数」の使い方を勘違いされているようです。
そのようなループとかのコードを書き、"Scripting.Dictionary"のそのオブジェクトを使って、格納させようとしながら、初歩的な文法を間違えてしまっているのは、どうしたものでしょう。
それから、"Scripting.Dictionary"を使うのが好きな人はいますが、適材適所というものがありますから、今回のような場合は、VBAでは、配列に格納して十分だと思います。
今回のように、格納するデータ数が多くなると、管理しにくいので、Excelでは、ワークシートを利用するということになります。
参考例:
シートには、
A1~A10に、
C:\aaa\
C:\bbb\
などと入れます。データの秘匿性が高い時は、隠しシート(プロパティのVisibleでVeryHiddenを手動で設定してください。)
'//
Sub Test2()
Dim myRng As Range
Dim i As Long
Dim aDest As Variant '配列
Set myRng = Range("A1:A10") '予めシートのA列に、定数を入れておく
ReDim aDest(myRng.Rows.Count - 1)
For i = 0 To UBound(aDest)
If myRng(i + 1) <> "" Then
aDest(i) = myRng(i + 1).Value
End If
Next i
MsgBox aDest(0)
End Sub
'//
なお、質問の意図を間違えていましたら、どうぞ無視して構いません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
Excelのセルの色指定をVBAから...
-
Excel オートフィルタのリスト...
-
[エクセル]連続する指定範囲か...
-
.NET - 配列変数を省略可能の引...
-
VBA-読み込んだテキストフ...
-
iniファイルのキーと値を取得す...
-
ExcelのINDEXとMATCH関数でスピ...
-
読み込みで一行おきに配列に格納
-
【VBA】配列に数式を仕込む方法...
-
配列のSession格納、及び取得方...
-
エクセルVBAで変数をセルに一行...
-
Datatableへの代入
-
VB6.0 ファイルの一括読込み
-
表にフィルターをかけ、絞った...
-
【VBScript】Dictionaryの項目(...
-
ショッピングカートの合計金額...
-
array関数で格納した配列の型を...
-
エクセル【IF関数、OR関数】に...
-
【VBA】ユーザーフォーム リス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
表にフィルターをかけ、絞った...
-
array関数で格納した配列の型を...
-
【VBA】ユーザーフォーム リス...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
読み込みで一行おきに配列に格納
-
エクセルでエラーを無視して一...
-
VBAでの100万行以上のデータの...
-
.NET - 配列変数を省略可能の引...
-
iniファイルのキーと値を取得す...
-
Excel オートフィルタのリスト...
-
SUMPRODUCT関数を用いた最小値
-
VBA 配列に格納した値の平均の...
-
Datatableへの代入
-
VB6.0 ファイルの一括読込み
-
[VBA]改行入りのセルの値を配列...
おすすめ情報