幼稚園時代「何組」でしたか?

【質問】
1番下のコードについて 変数Aの中身について分かりません
変数の初期値は 0 と思います

●しかし、以下のコードから見ると、 AはSheet1に定義されているように思えます
実際、Aは何でしょうか?
If Sheets(i).Name = A Then

●また、以下コードについて、checkは 任意の変数かと思いますが
 check("Sheet1")のような、書き方はあるのでしょうか?
Sheets("シート名")等なら分かるのですが。

ご存じの方、宜しくお願いします


If check("Sheet1") = True Then


【コード 動きます】
Sub macro1()

If check("Sheet1") = True Then

MsgBox "存在します"

Else

MsgBox "存在しません"

End If

End Sub


Function check(A As String)

Dim i As Long

For i = 1 To Sheets.Count

If Sheets(i).Name = A Then

check = True

Exit Function

End If

Next i

check = False

End Function

A 回答 (2件)

>1番下のコードについて 変数Aの中身について分かりません


>変数の初期値は 0 と思います

変数Aは、引数と呼ばれるものです。
Function check(A As String) の行で定義されます。
checkというfunctionプロシージャは、Aという文字列型の引数をとります。
checkの呼び出し側は、
If check("Sheet1") = True Then の行です。
これは、丁寧に書けば、
dim ret as Boolean ・・・①
ret = check("Sheet1") ・・・②
if ret = True then ・・・③
になります。
①②③をまとめて一気に書くと
If check("Sheet1") = True Thenになります。

ここで注目すべきは、
check("Sheet1")の箇所です。
これは、checkというfunction プロシージャを呼び出すときに、"Sheet1"という文字列を渡しています。
これを、Function check(A As String)の行で見ると、
Aに"Sheet1"が設定されて、checkが呼び出されていることになります。
従って、結論としては、Aの中身は"Sheet1"の文字列になります。

当然の話ですが、もし、
If check("Sheet100") = True Thenと書けば、
Aの内容は"Sheet100"になります。



>●また、以下コードについて、checkは 任意の変数かと思いますが
> check("Sheet1")のような、書き方はあるのでしょうか?
>Sheets("シート名")等なら分かるのですが。

checkはこのマクロの作成者が、決めたプロシージャ名です。
プロシージャ名は、多少の制約はありますが、勝手に決めて良いことになっています。
今回は、checkをプロシージャ名にしていますが、以下のような名前でも構いません。
check1
check123
check_sheet_name
sheet_name_check

そして、文字列である引数を1つ指定して呼び出すことになっているので
上記を呼び出す場合は、
check1("Sheet1")
check123("Sheet1")
check_sheet_name("Sheet1")
sheet_name_check("Sheet1")
とします。

もし、checkというプロシージャが、文字列を2つ引数としてとるならば
Function check(A As String,B as string)のように定義します。
この場合、呼び出し側は、
cjeck("Sheet1","Sgeet2")のように、2つ文字列を指定します。
    • good
    • 0

checkは変数ではなく関数です。

check("Sheet1")の値は、関数checkに引数"Sheet1"を渡したときの戻り値になります。
関数checkは引数Aを用いて定義されているので、Aのところに"Sheet1"を入れて計算した結果が戻り値となります。具体的にはSheets(i).Name = "Sheet1"を各ワークシートについて評価して、どれかがTrueなら戻り値はTrue、そうでないならFalseです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A