
いつもお世話になります
今、ひとつのシートにユーザ定義関数が二つ有って
それぞれの関数は定義されているセルの下に表を持っています
Application.Volatileを使って自動計算をさせ
Row0 = Application.ThisCell.Row
sht.Cells(Row0, 1).Activate
Call FindColumnWhole("周期", Row1, Col1)
その関数以下の行から検索させていますが
どうしても上の表の文字を検索してしまいます
Afterが機能しないので困っています
もし分かりましたら教えてください
なお、自動計算にはこんな定義もしています
Dim targetCell As Range
Set targetCell = Application.Caller
Set sht = targetCell.Parent
また、Findのサブルーチンは以下のようにしています
Sub FindColumnWhole(ByVal SearchM As String, Findrow As Integer, Findcol As Integer)
Dim FoundCell As Range, FirstCell As Range, Target As Range
nError = True
Set FoundCell = Cells.Find(what:=SearchM, After:=Cells(Row0, 1), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False)
If FoundCell Is Nothing Then
'MsgBox "検索文字(" + SearchM + ")が見つかりません"
nError = False
Exit Sub
Else
Set FirstCell = FoundCell
Set Target = FoundCell
Findrow = FoundCell.Row
Findcol = FoundCell.Column
End If
End Sub
いつもありがとうございます
ちょっと分かりづらい説明になってしまいましたが
よろしくお願い申し上げます
No.1ベストアンサー
- 回答日時:
こんばんは
省略が多くてほとんどわかりませんけれど・・・
呼び出し側が、
>Call FindColumnWhole("周期", Row1, Col1)
となっていますが、変数 Row1、Col1 をどのように設定しているのか不明です。
直上に Row0 を定義している部分は見受けられますが・・・
これに対してサブルーチン側では、
>Sub FindColumnWhole(
>ByVal SearchM As String, Findrow As Integer, Findcol As Integer)
として、行、列(?)を Findrow、Findcol として受け取るようになっていますけれど、想像するところ、これらは戻り値を受け取るための引数でしょうか?
もしそうなら、ByRefで定義しておかないと受け渡せないのでは?
それよりも、実際のFindメソッドで、
>Set FoundCell = Cells.Find(what:=SearchM, After:=Cells(Row0, 1)~~
となっていますが、Afterで指定している Cells(Row0, 1) の Row0 は引数で受け取ってもいないし、定義もされていないようですけれど、グローバル変数として定義でもされているのでしょうか?
何を計算するユーザ定義関数なのかわかりませんけれど、ユーザ定義関数にしてはなんだか不思議な構成になっているような気がしますけれど・・・
すみません、早々と
本当にいつもありがとうございます
Row0はグローバル変数です
ByRefは省略するとByRefになると思います
今朝、
SearchOrder:=xlByColumnsをSearchOrder:=xlByRowsにしたところ
うまく行ったので良しとしました
自分はユーザ定義関数のプログラムは初めてだったので、元々の形のままに
して修正したので私もはっきり理解していません
ごめんなさい
昨夜、帰り際の投稿だったのでちょっと質問が乱暴でしたね
ごめんなさい
これからもよろしくお願いいたします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ワークシート内 検索 HITしたら すべて選択する 6 2021/11/11 22:50
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) Excel VABについて 1.xlsm、VBA.xlsm2つのファイルがあり、1.xlsmにてVB 6 2021/12/13 17:46
- Visual Basic(VBA) EXCEL VBA シート貼り付け 3 2021/11/15 12:33
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) VBA Find でオートメーションエラー(エラー440)が出ました 1 2021/11/09 21:22
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) シート名をフォルダ名に変更 1 2021/12/01 15:59
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
排他的論理和 BCC(水平パリテ...
-
レンタルCGIは本当に利益を確保...
-
モジュラス103の計算とは何でし...
-
変化させるセルが変化しない
-
C++ でファイルを消す関数(??)
-
C言語についての質問です。 ル...
-
C言語についてです。 再帰を使...
-
オーバーフローします
-
高速化のテクニック
-
傾いた四角形内の範囲の条件式
-
matlabで計算終了
-
Excel VBA TREND関数について
-
テキストBOXに入力した数式をプ...
-
MATLABではどうすればいいので...
-
階乗のマクロ
-
Java 電卓の連続計算
-
時間(ミリ秒を含む)の引き算
-
CとFORTRANの計算速度はどちら...
-
素数判定アルゴリズム内の剰余計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
エクセルで特定のセルのみを任...
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
入射角反射角
-
スレッド処理からダイアログを...
-
60進数の四則計算
-
Javaと他言語比較について
-
VBAで関数をつくる
-
C言語 Σをつかったプログラム
-
CRC8を教えてください
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
おすすめ情報