• ベストアンサー

セル番地をvbaで探したい

エクセルのセルに A1→あ B1→い C1→う がはいっています。 この状態で Sub Macro1() Dim mystr1 As String mystr1 = "c1" MsgBox mystr1 & "の値は、" & "です。" End Sub を実行した時に、mystr1のアドレスを探して、msgboxに表示させたいのですが、 どのような方法があるのでしょうか? アドバイスよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

sub macro1()  dim mystr1 as string  mystr1 = "う"  on error goto errhandle  msgbox cells.find(what:=mystr1, lookin:=xlvalues, lookat:=xlwhole).address(false, false)  exit sub errhandle:  msgbox "NOT FOUND" end sub みたいな。

rzmmzzcirm
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! タイトルが >セル番地をvbaで探したい 質問文には >mystr1のアドレスを探して、 とありますので、メッセージボックスには「う」があるセル番地を表示させたい! という判断での一例です。 ちょっと回りくどいコードになりますが、極力お示しのコードに近い形にすると・・・ Sub Sample1() Dim mystr1 As String, c As Range, tmp As Variant tmp = "う" Set c = Cells.Find(what:=tmp, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then mystr1 = c.Address MsgBox tmp & " のセル番地は、" & WorksheetFunction.Substitute(mystr1, "$", "") & "です。" Else MsgBox "該当データなし" End If End Sub ※ 「う」は重複していない!という前提です。 (重複している場合は上位の行が、同じ行の場合は右側のセル番地が表示されます) こんな感じをご希望なのでしょうか?m(_ _)m

rzmmzzcirm
質問者

お礼

ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

やりたいことがいま一つわからないのですが、C1セルの値を表示したいなら単純に以下のコードで良いのではないでしょうか。 MsgBox mystr1 & "の値は、" & Range(mystr1).Value & "です。"

rzmmzzcirm
質問者

お礼

ありがとうございました。

関連するQ&A

  • 数値かどうかを取得したい IsNumberではダメ

    Sub Macro2() Dim mystr As String mystr = "1" If IsDate(mystr) = False Then MsgBox "NO" End If End Sub これなら日付型かどうかを取得できるのに、 Sub Macro1() Dim mystr As String mystr = "1" If IsNumber(mystr) = False Then MsgBox "NO" End If End Sub だと、IsNumberがコンパイルエラーになります。 変数に入っている値が数値として評価できるかを取得する方法を教えてください。

  • ややこしいですがご協力ください

    アクセスからエクセルを起動してエクセルで実行した変数をアクセスに持って帰りたいです。 【アクセス側】_ Sub エクセルの値を持ってくる() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim MyFileName As String Dim myStr As String Set xlApp = New Excel.Application MyFileName = "C:\Users\エクセル.xlsm" Set xlBook = xlApp.Workbooks.Open(MyFileName) xlApp.Visible = True xlApp.Run "'" & MyFileName & "'!" & "Excel_test" Set xlApp = Nothing MsgBox myStr ’★ End Sub 【エクセル側】 Sub Excel_test() Dim myStr As String myStr = "アクセスへ渡す" MsgBox myStr End Sub としたときに、アクセスの MsgBox myStr ★でも エクセルで実行させた変数を持って帰りたいのですが どこを修正すればよろしいでしょうか? ご教授よろしくお願いします。

  • 【1】と【2】のvbaは同じ意味ですか?

    【1】 Option Explicit Sub test1() Call test2("aaa") End Sub Sub test2(MyStr As String) MsgBox MyStr End Sub 【2】 Option Explicit Dim MyStr As String Sub test1() MyStr = "aaa" Call test2 End Sub Sub test2() MsgBox MyStr End Sub 結果は同じですが、中身が違います。 今後コードを作っていく上で どちらの方式の方が良いのでしょうか?

  • vbaでCountIf関数を使いたい(エクセル)

    A1セルにa-a-aがはいっています。 この場合aは3つですよね。 これをvbaで取得するコードを作っているのですがうまくできません。 Sub test() Dim myStr As String myStr = "a" MsgBox WorksheetFunction.CountIf(Cells(1, 1), "*" & myStr & "*") End Sub これをすると、なぜか1が返ってきます。 Aは3つあるのになぜ1が返るのでしょうか? A1にaaaaaを入れて実行しても1が返ります。

  • エクセルVBAの次のコードの意味教えて下さい。

    Sub macro1() Dim a As Integer, b As Integer a = 1 b = 5 macro2 a, b MsgBox a + b End Sub Sub macro2(c As Integer, d As Integer) c = c * 10 d = d * 5 End Sub 答えは35と出ます。 よろしくお願いします。

  • 配列 変数の宣言 VBA

    こんばんは。 Sub test() Dim myStr(200) As String For 行 = 0 To Cells(Rows.Count, 1).End(xlUp).Row myStr(行) = Cells(行 + 1, 1) Next MsgBox Join(myStr, "_") End Sub のようなコート゛を作成し、 アクティブシートのA列の最終行までを取得し、一つにまとめたいのですが 「Dim myStr(200) As String」の部分で 最終行を取得することは不可能でしょうか? 今回は200行なので大丈夫なのですが 場合によっては1行~65536行までさまざまです。 なので Dim myStr(Cells(Rows.Count, 1).End(xlUp).Row) As String としたらエラーになりました。 最初から Dim myStr(65536) As String とするべきでしょうか? しかしそうすると myStrの最後がずっと「________」となってしまいます。 どうするのが適切なのかわかりません。 ご教授よろしくお願いします。

  • vbaで配列に値を格納する場合

    vbaで配列に値を格納する場合 変数の宣言はどちらを使った方が良いのでしょうか? Sub Sample1() Dim i As Long Dim myStr As String Dim tmp() As String myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub か Sub Sample1() Dim i As Long Dim myStr As String Dim tmp As Variant myStr = "a,i,u,e,o" tmp = Split(myStr, ",") End Sub でも問題なく動くのですが、 Variant型での宣言はあまりしない方が良いですか? あと Dim tmp() As String ならエラーにならないのですが Dim tmp As String だとエラーになってしまう理由がよくわからないので教えて頂けますか?

  • 【エクセルvba】(1)(2)(3)を区切りとして分けたい 配列

    こんばんは。 もしエクセルで可能なら教えていただきたいです。(2003です) A1セルに (1)りんご(2)みかん(3)バナナ と入力されています。 これを A2にりんご、B2にみかん、C2にバナナ とSplitと使って区切りたいのですが不可能でしょうか? 以下がここのサイトを参考にして作ったサンプルマクロです。 Sub サンプル() Dim myStr As String Dim ar As Variant myStr = Cells(1, 1) ar = Split(myStr, "") '←この部分をどうすればいいのかわからない Cells(2, 1).Resize(1, UBound(ar) + 1).Value = ar End Sub やはり、区切る文字が複数ある場合は不可能でしょうか? ご教授よろしくお願いします。

  • VBA 変数にアスタリスクが含んでるかどうか

    変数にアスタリスクが含んでるかどうかをIFステートメントで取得するには? Sub test() Dim mystr As String mystr = "*/" If mystr Like "*" Then MsgBox "mystrはアスタリスクを含んでます。" End If End Sub このようなことをしたい場合、 mystr = "*/" でも mystr = "/" でも、結局は*が、どの文字でも含まれると認識してしまいます。 変数にアスタリスクが含まれてるかどうかを判定する方法を教えてください。

  • エクセルvbaに関する質問です

    ExecuteExcel4Macroを使った際について質問があります。 別ブックのセルを参照したいために、ExecuteExcel4Macroを使いました。 1つ目のmsgboxではパスを変数で、二つ目のmsgboxではパスを直書きしています。 下記のサンプルプログラムで2つとも同じものを表示させたいのですが、別の結果が表示されます。 =====サンプルプログラム===== Sub Sample1() Dim name As String Dim path As String Dim sheet As String path = "C:\Users\USER\Desktop\シフト表\新しいフォルダ\" name = "book1.xls" sheet = "Sheet1" Application.DisplayAlerts = False MsgBox ExecuteExcel4Macro("'" & path & "[" & name & "]" & sheet & "'!R1C1") MsgBox ExecuteExcel4Macro("'C:\Users\USER\Desktop\シフト表\新しいフォルダー\[book1.xls]Sheet1'!R1C1") Application.DisplayAlerts = True End Sub ===ここまで===== 実際のbook1.xlsのA1セルには「1」が入っているのですが、変数で書いた場合のみ「aaaaaa」が表示されます。 どうかご教授いただけたら幸いです。

専門家に質問してみよう