• ベストアンサー

VBA セル位置の確認

はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 Dim AAA Dim name Dim x dim y AAA=split(文字列,",") ここで作成されたAAA(0)はシート名を表しています。 name = "田中" AAA(0)というシートにあるname"田中"が 記入されているセルの位置(x,y)を 確認するにはどのようなコーディングを行えばよいのでしょうか。 大変恐縮ですがコーディング等を明記して頂けると助かります。 よろしくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim AAA As Variant Dim myName As String Dim x As Long Dim y As Long Dim st As String Dim r As Range st = "Sheet1,Sheet2,Sheet3" AAA = Split(st, ",") myName = "田中" Set r = Worksheets(AAA(0)).Cells.Find(What:=myName, LookAt:=xlWhole) x = r.Row y = r.Column MsgBox "行:" & x & vbLf & "列:" & y End Sub とか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA ブック内文字列検索

    はじめまして 当方、初心者で勉強の身です。ご回答頂けたら幸いです。 文字列"AAA"で、ブック内の全シートに検索を行い ヒットしたシート名を変数配列BBB(15)に順次格納していく コーディングを考えていますが、実装方法がわかりません。 不明点 ・ブック内検索方法 ・ヒットしたシート名を配列に格納する 大変恐縮ですがコーディング等を明記して頂ける助かります。 よろしくお願い致します。

  • VBA シート間の単一セルから結合セルへのコピー

    マクロについてご教授をお願いします。 ◆実現したい事 2枚のシート(XとY)が存在します。 コピー元:Xシート          コピー先:Yシート    B列                    B列 1行 商品1   コピペ→     1~3行結合 商品1  2行 商品2   コピペ→     4~5行結合 商品2 3行 商品3   コピペ→     6~8行結合 商品3   ・                    ・   ・                    ・   ・                    ・  最終行                  最終行 XシートのB列に1行ずつ、商品名が羅列されています。 YシートのB列には、3行結合(B1:B3)、(B4:B6)、(B7:B9)・・・空白セルがあります。 Xシートの商品名をYシートの結合セルにマクロを使って処理したいです。 ◆試した事 (1)結合を解除し、XからYへ範囲コピーしたが、YのB列に再び、商品毎に2行追加し、結合  2行追加する方法がわからず断念 (2).valueでXシートB1 = YシートB1を試みるができない ◆ここで詰まってます>< Dim X As Worksheet Dim Y As Worksheet Dim 最終行1 As Long Dim 最終行2 As Long Dim cp1 As Long・・・・Yシート行変数 Dim cp2 As Long・・・・Xシート行変数 Set X = Worksheets(1) Set Y = Worksheets(2) 最終行1 = Cells(Rows.Count, 2).End(xlDown).row 最終行2 = Cells(Rows.Count, 2).End(xlDown).row For cp1 = 1 To 最終行1 For cp2 = 1 To 最終行2 Step 3 sh1.Cells(cp1, 2).Copy Destination:= sh2.Cells(cp2, 2) Next Next みたいな感じにできればと、Copyを.valueなどにしてみたりと試してみましたが、 なかなかうまくいかず、3日くらい悩んでいます。 シンプルにやりたいのですが、なにか良い方法などあれば、 ご教授のほどお願い致します><

  • こんにちは。

    こんにちは。 Excel VBA で別シートの特定列をセル参照させて、あたらしいシートを作成しています。 以下の方法で実現できてはいるのですが、行数が多く且つ20回以上(20列というべき?)も 同じ処理をさせているため、処理が3分近くかかって遅いことを気にしています。 (やりたいこと) ・参照元シート「AAA」の値を変更すれば、参照先シート「BBB」の表も自動的に書き換わるようにしたい。 ・AAAシートのデータ行数は各列とも同じだが、何行あるかは不定。 ・参照元、参照先の列関係(下の例で言えばAAAシートB列をBBBシートC列に、AAAシートY列をBBBシートD列に対応させる)は固定。 (現在のコード) 参照元シート「AAA」のB3~B5003のセル番地を、参照先シート「BBB」のC11~C5011に設定。 同様に、参照元シート「AAA」のY3~Y5003のセル番地を、参照先シート「BBB」のD11~D5011に設定。 同様に…(これを約20列分行なう) Dim maxRow As Long, n as Long maxRow = 5003 ' 実際には関数を使って取得します。 For n = 3 To maxRow ' AAAシートB3~B5003 → BBBシートC11~C5011 Cells(8 + n, 3).Formula = "=AAA!B" + n ' AAAシートY3~Y5003 → BBBシートD11~D5011 Cells(8 + n, 4).Formula = "=AAA!Y" + n '  : '  以下同様の処理がおよそ20列続きます。 Next n 値コピーではなく参照式を一括で埋め込む方法や、別の手段で参照式の設定を高速化させる うまい方法をご存知の方、ご教授いただけませんでしょうか。

  • エクセルVBAで指定したセルへジャンプするコード(追加の質問です)

    昨日、エクセルVBAで指定したセルへジャンプするコードで質問させていただき、よい方々にご回答いただき、解決する ことができました。 http://oshiete1.goo.ne.jp/qa2902184.html 考えているうちに欲がでてきて、次のようなこともできればと考え再び質問に参りました。 コードは昨日Nayuta_Xさんが、最初にご提示いただいて、それをもとに付加していただいたmerlionXXのコードをお借りして下に載せました。 そのコードで追加したいことは、 1.ジャンプしたセルに色をつけ、次へ移る際に色を消しますが、最初から色のついたセルの場合その色も消えるので、最初の色に戻したい 2.「設定」シートのA列にシート名、B列にセル番地をつけていますが、C列にコメント欄を設けて、セルにコメントを挿入できるようにして、次に移る際、コメントを削除する。(コメントは、できることならコメントのサイズに合わせて、表示状態にする) この2点を追加できたらうれしいです。以下のコードに追加できますか? Sub test01() Dim x As String Dim Workbook_Name As String Dim ThisSheet_Name As String Dim Sheet_Name As String Dim ThisRange_Name As String Dim Range_Name As String Dim I As Integer, n As Integer Dim Ans As Integer ThisSheet_Name = ActiveSheet.Name '設定シート Select Case Workbooks.Count Case 1 MsgBox "他に開いているBOOKはありません。" Exit Sub Case 2 For n = 1 To 2 If Workbooks(n).Name <> ThisWorkbook.Name Then x = Workbooks(n).Name End If Next Case Else MsgBox "他に開いているBOOKが複数のため対象を特定できません。" Exit Sub End Select Workbook_Name = x '開いている“もうひとつのブック”の名前 I = 0 ' 開きたい シートは、A列の3行目から セル番号は、B列の3行目から記入すること。 Do While (1) With ThisWorkbook.Sheets(ThisSheet_Name) If .Range("A3").Offset(I, 0).Value = "" Then MsgBox "データがなくなりました。" ThisWorkbook.Activate Exit Do End If 'A列の3行目以下が、空白なら終わる Sheet_Name = .Range("A3").Offset(I, 0).Value Range_Name = .Range("B3").Offset(I, 0).Value End With Windows(Workbook_Name).Activate Sheets(Sheet_Name).Select Range(Range_Name).Select Selection.Interior.ColorIndex = 6 Ans = MsgBox("「次に進みますか?」", vbYesNo) Selection.Interior.ColorIndex = xlNone If Ans = vbYes Then I = I + 1 Else Exit Do End If Loop End Sub

  • エクセルVBA・完全一致の情報

    既に出ているかもしれませんが… 文字列の完全一致で、セルの座標を取得が上手くいきません。 現在は完全一致した場所を塗りつぶしています。 A B C 1 2 AAA 3 Sub Find_moji() Dim a As Integer Dim b As Integer Dim c As Object For Each c In Worksheets("特産品素材").Range("a1:a3") If c.Value Like "AAA" Then c.Interior.ColorIndex = 3 '赤 End If Next c End Sub 求めたい結果としては、AAAが入っているA2を塗りつぶして、AAAの座標(X座標1、Y座標)の情報を取得したいのです。 お願い致します。

  • エクセルVBAでセル位置の置き換え

    売上帳をエクセルVBAを使って作っています。 シート自体は、    B    C     D    E 1 日付 顧客NO. 顧客名 品名 2 3 のようになっており、 B列、C列、D列の最終行に入っている値を、その一行下から、E列最終行までのB~D列全部に貼りつけたいのです。 コードは下記のように書いてあります。 Dim 行番号 Dim セル日 Dim セル客 Dim 品名行 Dim 日付行 Dim セル日2 Dim セル日3 Sub 日付と顧客名を貼付() 行番号 = Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行の行番号を取得し「行番号」に代入 セル日 = "B" & 行番号 セル客 = "D" & 行番号 Range("セル日:セル客").Copy '日付と顧客番号と顧客名をコピー 品名行 = Cells(Rows.Count, "E").End(xlUp).Row 'E列最終行の行番号を取得し「品名行」に代入 日付行 = Cells(Rows.Count, "B").End(xlUp).Row + 1 'B列最終行の1行下の行番号を取得し「日付行」に代入 セル日2 = "B" & 日付行 セル日3 = "B" & 品名行 Range("セル日2:セル日3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'B列最終行の1行下のB列からD列に値の貼り付け End Sub これを実行すると、 『Range("セル日:セル客").Copy』の部分でエラーがでます。 正しくはどのように書けばよいのでしょうか?

  • EXCEL VBA 複数のセル位置を記憶したいで

    こんにちわ。 EXCEL VBAでセル位置記憶方法について質問させていただきます。 あるシート中で以下例の様に4つの規則性のないセル(cells(1,1) cells(3,2),cells(5,4),cells(2,5)に対してOFFSET処理を4回したいので、X1、X2、X3、X4に各セル位置を記憶させたいので以下のように記述しましたが、うまく動きません。 どなたかセル位置を変数に記憶させる方法をご教授いただけませんでしょうか? dim X1 dim X2 dim X3 dim X4 X1 = cells(1,1) X2 = cells(3,2) X3 = cells(5,4) X4 = cells(2,5) 例) Cells(X1).Select ActiveCell.Offset(0, 2).Select Cells(X2).Select ActiveCell.Offset(0, 2).Select Cells(X3).Select ActiveCell.Offset(0, 2).Select Cells(X4).Select ActiveCell.Offset(0, 2).Select よろしくお願い致します。

  • VBAのプログラムについて

     VBAでプログラムを書いて以下のようなことを実行したいと考えていますが方法がよくわかりません。   ***1002とセルに入力されているセル列に対して、先頭の文字がaaaであったときに、その後ろの1002を計算して数値に変換するという作業です。  仮に、B列でaaa1002とあった場合に、セルの値がaaaであったときのみ、後ろの1002を100×10^2=10000と計算してB列に対応させてC列に出力したいと考えています。        B列     C列 1行目    aaa1002  10000  2行目 aac1001  空白 3行目 aaa4701  4700  :       :      : 具体的なプログラムのコード、もしくはこのような関数を使えばいいなどヒント等でも構いませんので 教えてください。よろしくお願いします。

  • VBA 4行毎にセルをコピペする方法をご教授お願いします><

    VBA 4行毎にセルをコピペする方法をご教授お願いします>< はじめましてVBA初心者です。 質問のマクロをForNext等で作成しましたが行毎にコピペする方法が導きませんでしたのでどなたかご教授のほどお願いします。 ■やりたいこと Sheet1のA1~A50のセル行をコピーし、Sheet4のA1を開始としてA1、A5、A9・・・と貼り付け Sheet2のA1~A50のセル行をコピーし、Sheet4のA2を開始としてA2、A6、A10・・・と貼り付け Sheet3のA1~A50のセル行をコピーし、Sheet4のA3を開始としてA3、A7、A11・・・と貼り付け を行いたい。 ■イメージ   Sheet1 Sheet2 Sheet3 Sheet4 A(列) A(列) A(列) A(列) 1 Name1 1 com1 1 Address1 1 Name1 2 Name2 2 com2 2 Address2 2 com1 3 Name3 3 com3 3 Address3 3 Address1 4 Name4 4 com4 4 Address4 4 Name2 5 Name5 5 com5 5 Address5 5 com2 6 Name6 6 com6 6 Address6 6 Address2 7 Name7 7 com7 7 Address7 7 Name3 8 Name8 8 com8 8 Address8 8 com3 9 Name9 9 com9 9 Address9 9 Address3 10 Name10 10 com10 10 Address10 : : : : : ■作成途中のマクロ Sub Sample() Dim rw1 As Integer 'Sheet1の変数 Dim rw2 As Integer 'Sheet2の変数 With Sheets("Sheet1") For rw1 = 1 To 50 Sheets("Sheet1").Cells(rw1, 1).Copy ???Sheets("Sheet2").Cells(rw1 * 4 , 1).PasteSpecial Paste:=xlPasteValues Next rw1 ForNextの組み合わせ+αで自動化できる方法があれば教えてください。 わかりづらい御説明で申し訳ございませんがお願い致します。

  • excelで別シートのセルを選択(VBA)

    どなたか教えてください。 シートXのB1に行番号 シートXのB2に列番号 が記載されていたとして、 別シート(Y)の、上記で指定したセルを選択する(フォーカスを移動する方法)を教えてください。 シート(X)   A   B   C  1 行  25  2 列  2  シート(Y)   A   B   C  1 2   ::::::: 24 25   (ここ) 以下のように書いても、最後の行でエラーになってしまいます。  行番号 = Sheets("X").Cells(1, 2).Value  列番号 = Sheets("X").Cells(2, 2).Value  Sheets("Y").Select  Range(Cells(行番号, 列番号)).Select