[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「結果」という文字列の入ったセルのアドレスをマクロで取得したいです。』(やし)
素人レベルの質問で申し訳ありません。
最近、エクセルでマクロを使い始めたマクロ初心者です。
エクセルファイルを開き、「結果」という文字列の入ったセルのアドレスを取得したいです。
下記のようにVBAマクロからmatch関数を用いてトライしています。
テスト用にA2セルに「結果」と記入したエクセルファイルでマクロを実行しましたが、MsgBoxで「matchInt = 0」が表示されます。
[[20160819234328]]の最後に記載のマクロを参考にしています。
取得できるようにするには、マクロをどのように書き換えればよいか、ご教授いただける方がいらっしゃいましたら、よろしくお願い致します。
Dim matchInt As Integer matchInt = WorksheetFunction.Match("結果", Rows(1), 0) MsgBox "matchInt = " & matchInt
< 使用 Excel:Excel2010、使用 OS:Windows10 >
こんばんは
Sub 結果という文字列の入ったセルのアドレスを取得する() Dim i As Long, r As Long r = Range("a" & Rows.Count).End(xlUp).Row For i = 1 To r If InStr(Range("A" & i), "結果") Then MsgBox "A" & i & "です" End If Next End Sub ・・・どうでしょうか (定年間近) 2017/02/20(月) 01:45
>やし さん 1行目に「結果」の文字が入るセルが複数あるってことは、ないですか?
次のtestプロシージャでは、最初に見つかった、列番号しか返しません。
Sub test() Dim x As Variant, str As String str = "結果" x = Application.Match(str, Rows(1), 0) If IsNumeric(x) Then MsgBox "1列目から右方向に検索してみたところ、" & vbCr & _ "最初に見つかったのは、【 " & x & " 】列目でした。", _ vbOKOnly, "検索文字: " & str End If End Sub (マリオ) 2017/02/20(月) 05:38
【コードの概要】 複数のセルに「結果」の文字列が格納されている場合に、すべてのセルアドレスを表示する
Sub test2() Dim str As String str = "結果"
Dim sh As Worksheet Dim myRng As Range, c As Range, myRng2 As Range Set sh = ThisWorkbook.Sheets("Sheet1") '★「シート名:Sheet1」 Set myRng = sh.Range(sh.Cells(1, "A"), sh.Cells(1, Columns.Count))
For Each c In myRng 'If c.Value Like "*" & str & "*" Then '★あいまい検索ならコチラ(例えば、「試合結果1」) 'If Trim(c.Value) = str Then'★前後の空白を除去するなら If c.Value = str Then If myRng2 Is Nothing Then Set myRng2 = c Else Set myRng2 = Union(myRng2, c) End If End If Next c
If Not (myRng2 Is Nothing) Then MsgBox "次のセルで見つかりました" & vbCr & myRng2.Address(False, False), vbOKOnly, "検索文字: " & str End If Set sh = Nothing: Set myRng = Nothing: Set myRng2 = Nothing End Sub (マリオ) 2017/02/20(月) 05:38
行と列を間違えているだけかも
Rows(1)をColumns(1)に変更して実行してみてください
(マナ) 2017/02/20(月) 18:50
こんばんわ。
もう以前の要件はあんまり覚えてないけど、今回の質問内容も項目名などで検索して、その間のデータを転記するとかですか? 確か参照先もそんな内容だったかなと思います。
>matchInt = WorksheetFunction.Match("結果", Rows(1), 0) >MsgBox "matchInt = " & matchInt 0が表示される? そんな訳は無いと思うんですが? この記述だと検索対象が見つからないとエラーになると思いますが、本当に0が代入されたんですか? On Error Resume Next が何処かに記述されている?
何れにしてもコードの一部だけでは今回の要件が不明すぎるので、 1、コードの全文を提示して下さい 2、何をしたいのか要件を提示して下さい。(結果のセルを探すと言うのは手段であって要件ではありません) 3、レイアウトを提示して下さい。(マナさんからもあるように行列間違えてる可能性もあるので) 上記3点の質問に答えて下さい。
(sy) 2017/02/20(月) 22:11
補足ですけど、
>テスト用にA2セルに「結果」と記入した… A2セルは2行目なので、Rows(1)は1行目を検索してるので、Matchする事は絶対ありません。
マナさんが言われてるように、Columns(1)にすればA列を検索するので、2を返します。
(sy) 2017/02/20(月) 22:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.