[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ByRef引数の型が一致しませんのエラー回避』(勉強中)
表題のエラーで理由が分からない事例が2つあります。
アドバイス頂けますと助かります。
<事例1>
モジュール1に下記コードを書いて、
Sub フィルタ掛かっていればクリア(ws As Worksheet)
If ws.FilterMode = True Then ws.ShowAllData End Sub
モジュール2にCallで呼び出したいのですがエラーになります。
Sub フィルタクリア()
Set ws = ThisWorkbook.Worksheets("Sheet1") Call フィルタ掛かっていればクリア(ws) End Sub
※Call フィルタ掛かっていればクリア(ActiveSheet) とすると動きます。
ActiveSheetでなく、変数で取得したシート名でCallで動かすにはどのように書けばよいのでしょうか。
<事例2>
モジュール1に下記コードを書いて、
Function Get最終行(ws As Worksheet, C As Long) As Long
Get最終行 = ws.Cells(ws.Rows.Count, C).End(xlUp).Row End Function
モジュール2でSheet1のA列の最終行を取得する際にGet最終行を使いたいのですがエラーになります。
Sub 最終行取得()
Set ws = ThisWorkbook.Worksheets("Sheet1") MsgBox Get最終行(ws, 1) End Sub
事例1も2も「ByRef引数の型が一致しません」となります。
CallやFunctionの使い方を勉強し始めたばかりで、引き渡しのルールが調べてもいまいちピンときません。
よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
>事例1も2も「ByRef引数の型が一致しません」となります。
ならば、型を宣言してください。
(マナ) 2023/09/03(日) 15:20:33
ありがとうございました。
呼び出し先にちゃんと型を宣言しないとだめ…という事だったのですね。。。
「Dim ws As Worksheet」と書くことで動きました。
(勉強中) 2023/09/03(日) 16:02:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.