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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1224閲覧

変数宣言せずに、DIRのコードを使うとエラーが出ます。理由を教えてください。お願い致します。

ta-

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/07/11 00:23

VBA初心者です。ご回答よろしくお願いいたします。

変数宣言せずにDIRを用いて、ファイル名を取得しようとするとエラーが発生します。
逆に、変数宣言してから行うと、作動します。
その理由を教えて頂けませんか。

問題のコード
Sub test12()
Do While Dir("C:\データ\フォルダ*.xlsx") <> ""
MsgBox Dir("C:\データ\フォルダ*.xlsx")
Dir("C:\データ\フォルダ*.xlsx") = Dir
Loop
End Sub

エラー文
代入式の左辺の関数呼び出しは、バリアント型またはオブジェクト型の値を返さなければなりません。

※この問題のコードの
Dir("C:\データ\フォルダ
.xlsx")を変数宣言すると、エラーなく作動します。
*
Sub test11()

Dim 呼び出しデータ As String
呼び出しデータ = Dir("C:\データ\フォルダ*.xlsx")

Do While 呼び出しデータ <> ""
MsgBox 呼び出しデータ
呼び出しデータ = Dir
Loop

End Sub

※MsgBox TypeName(Dir("C:\データ\フォルダ*.xlsx"))はSTRINGと表示されました。

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

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

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

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

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

y_waiwai

2021/07/11 00:31 編集

Dir("C:\データ\フォルダ\*.xlsx") = Dir これってなにをしてるつもりなんでしょう
ta-

2021/07/11 00:32

コンパイルエラー: 代入式の左辺の関数呼び出しは、バリアント型またはオブジェクト型の値を返さなければなりません。 よろしくお願い致します。
y_waiwai

2021/07/11 00:35

ああ、いきちがいになってしまいました Dir("C:\データ\フォルダ\*.xlsx") = Dir これってなにをしてるつもりなんでしょう
ta-

2021/07/11 00:45

変数宣言したコードの 『呼び出しデータ = Dir』 は正常に動いたので 変数宣言せずに 『Dir("C:\データ\フォルダ\*.xlsx") = Dir』 と入力して、動作確認をしようとしています。
ta-

2021/07/11 00:47

Dir("C:\データ\フォルダ\*.xlsx") = Dir のコード部でエラー文が発生します。
guest

回答1

0

ベストアンサー

変数は値を格納する入れ物です。

関数は値を返すものです。値を格納(代入)することはできません。

vba

1Dir("C:\データ\フォルダ*.xlsx") = Dir

この式は両辺ともDir関数になってます。
= は右辺の値を左辺へ代入(格納)するというものですが、関数に代入することはできませんので、当然、エラーになります。

投稿2021/07/11 00:58

hatena19

総合スコア34053

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

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

ta-

2021/07/11 01:09

回答ありがとうございました。 すごくスッキリしました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問