[[20170220005148]] 『「結果」という文字列の入ったセルのアドレスをマ』(やし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「結果」という文字列の入ったセルのアドレスをマクロで取得したいです。』(やし)

素人レベルの質問で申し訳ありません。
最近、エクセルでマクロを使い始めたマクロ初心者です。

エクセルファイルを開き、「結果」という文字列の入ったセルのアドレスを取得したいです。
下記のように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

>テスト用にA2セルに「結果」と記入した…

行と列を間違えているだけかも
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


みなさま、ありがとうございます。
申し訳ありませんが、仕事がピークを迎えつつあり、なかなか動作を確認することができていません。
もう少し落ち着いてから、必ず、皆様からいただいたコードを確認し、学習を進めます。
rowsとcolumnsを逆に使っていたりと、未熟さを露呈してしまいお恥ずかしい限りですが、よろしくお願い致します。
(やし) 2017/03/07(火) 01:29

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.