• ベストアンサー

エクセルのマクロで検索

Musaffahの回答

  • ベストアンサー
  • Musaffah
  • ベストアンサー率36% (37/101)
回答No.6

とりあえず、No.5で書いた内容に基づいてVBAマクロを作ってみました。これを参考にしてみてください。 (補足を待たずに早とちりで作ってしまいました。ごめんなさい。) ただし、このNo.5で記述した内容では不備があります。 [会員組織図]ワークシートに "A","A1","A12" "B","B1" "_","B2","B21" ※"_"は空欄 と登録している状態で、Aさんが紹介者となる新会員"A2"さんを登録する場合、B2さんの下のセルに登録するのでしょうか? (私が何か勘違いしてたらごめんなさい。) 【内容】 フォームクラスをUserForm1とする。 下記VBAマクロを標準モジュールに追加する。 "会員登録"マクロを起動すると、会員登録フォームが表示される。 UserForm1クラスで、登録したいときにisEntryNewMenber()をコールする。 この関数の戻り値が trueであれば登録成功。 falseであれば登録失敗。 =========================== Private ws As Worksheet Public Sub 会員登録() Dim frm As UserForm1 Set frm = New UserForm1 Load frm frm.Show End Sub Public Function isEntryNewMenber(strNewMenber As String, strIntroductor As String) As Boolean Dim rIntroCell As Range Dim iRow, iCol As Integer isEntryNewMenber = False Set ws = Worksheets("会員組織図") strNewMenber = Trim(strNewMenber) strIntroductor = Trim(strIntroductor) If Len(strIntroductor) <> 0 Then '紹介者あり? Set rIntroCell = findMenber(strIntroductor) '紹介者検索 If Not rIntroCell Is Nothing Then '紹介者発見? Call entryNewMenber1(rIntroCell, strNewMenber) '紹介者の隣に登録 isEntryNewMenber = True Else '紹介者の名前なし 'エラーメッセージ表示 End If Else '紹介者なし Call entryNewMenber2(strNewMenber) '会員登録 isEntryNewMenber = True End If End Function '紹介者の名前検索 Private Function findMenber(ByVal strName As String) As Range Set findMenber = ws.Cells.Find(what:=strName) '氏名検索 End Function '新会員登録(紹介者あり) Private Sub entryNewMenber1(ByVal rIntroCell As Range, ByVal strName As String) Dim iRow, iCol As Integer iRow = rIntroCell.Row iCol = rIntroCell.Column + 1 While Len(Trim(ws.Cells(iRow, iCol))) <> 0 iRow = iRow + 1 Wend ws.Cells(iRow, iCol) = strName End Sub '新会員登録(紹介者なし) Private Sub entryNewMenber2(strName As String) Dim iRow, iCol As Integer Dim rEntryCell As Range Dim strR As String Dim i As Integer iRow = 0 Do strR = "IV" & CStr(iRow + 1) Set rEntryCell = Range(strR).End(xlToLeft) iRow = iRow + 1 iCol = rEntryCell.Column Loop Until (iCol = 1) And (Len(Trim(ws.Cells(iRow, iCol))) = 0) ws.Cells(iRow, iCol) = strName End Sub

vivatom
質問者

補足

Aさんが紹介者となる新会員"A2"さんを登録する場合、A1さんの下に挿入したいと思っております。 "A","A1","A12" "_","A2" "B","B1" "_","B2","B21" ※"_"は空欄 よろしくお願いします。

関連するQ&A

  • エクセルのマクロで教えてください

    excelのマクロで2つお伺いします 1.右のセルの内容を下に移す A 1 2 3 4 B 3 4 6 を A 1 A 2 A 3 A 4 B 3 B 4 B 6 メニューから下に何行か行を挿入して おいて特殊ペーストで行列を いれかえるとすればできたのですが 何通りもある場合マクロを使って できないでしょうか 2.リレーショナルへの対応 A 1 2 B 2 3 4 1 あ う 2 い 3 お 4 か き 左側1列目は右に続く(個数不定)記号を もっているとして1番目(A、、) 2番目(1、、)、3番目(あ、、)を 結び付けたいのです 上の例ですと A あ う い B い お か き をマクロで出力できますでしょうか ご存知の方いらっしゃいましたら 教えてください。よろしくお願いします。

  • エクセルのマクロで入力文字を一文字ずつ並んだセルに入れる

    エクセルマクロ超初心者です。 エクセルVBAでユーザーフォームを作成しました。 テキストボックスに入力した文字列を「登録」ボタン押下後、エクセルシートのセルに一文字づつ入るようにするにはどうすれば良いでしょうか? 例えばテキストボックスに「kohiro」と入力するとエクセルのsheet1のA1「k」、B1「o」、C1「h」、D1「i」、E1「r」、F1「o」となるようにしたいのです。入力する文字数は0~30文字までで、その都度長さは変わります。どうやって、文字をばらせばいいのか、またどうやって可変長の文字列を指定したセルに入力すればいいのかわかりません。どうかよろしくお願いいたします。

  • EXCELのマクロでテキストを読み込む方法

    EXCELのマクロを使って、テキストファイルから、ある文字列を検索し、コピーしEXCELのシートのセルにペーストするマクロの書き方をご存知の方は、ご教示願います。 例えば、テキストファイル中の「dog」という文字列を検索して、EXCELの決まったセル(A、1)にコピペするというマクロです。 よろしくお願い申し上げます。

  • エクセルのテキストボックス内は検索できないのでしょうか?

    エクセルの表から任意の文字列をカウントしたいのですが、一部セルでなくテキストボックスにて表が作成されている部分があります。 このテキストボックス内の文字列を検索する方法はあるのでしょうか? 客先指定のフォームのため作り直すことができないのですが、何かよい方法をご存知でしたらぜひご教示ください。

  • 検索後、削除や抽出するマクロ

    エクセルのシート1、A列の1~1500のセルにテキストが入力されており ある特定のテキストを含むセルを全て シート2のA列に抽出したいのですが、検索してみましたがうまくできません。 作業の流れとしては シート1のA列を範囲指定し、編集-検索、検索する文字列を入力し、すべてを検索をクリック 検索結果をコピーし、シート2のA列に貼り付ける もうひとつはシート1、A列の1~1500のセルにテキストが入力されており テキスト1またはテキスト2を含むセルを全て削除するというマクロを作成したいです。 ご指導のほどよろしくお願いいたします。

  • エクセルでテキストファイルからフォームのテキストボックスにテキスト挿入するマクロ

    マクロでフォームのテキストボックスに直接テキストファイルからテキストを挿入したいのですが出来ますか? opentextでエクセルシートに入れてからフォームにコピーすることはできたのですが、それだと重くなってしまうので直接取り込みたいんですがうまくいきません。 VBやJAVAのreadlineのようなものは使えないんでしょうか。

  • エクセル2010のマクロについての質問です。

    エクセルにてマクロを組もうと色々調べているのですが、 どうしてもわからないため教えていただきたいことがあります。 現在、マクロを実行すると固有の文字をアクティブセルに挿入するというマクロを作成しました。 このマクロを少し改造したいのですが、A1とB1に=のものが入っている行の特定の列のセルに固有の文字を挿入するという風にしたいです。 例えば、Aの列にはA1には1、A2には2という風に順に10間での数字が入っていて、 B1には9が入っている場合、C9のセルに固有の文字を挿入するという感じです。 B1を7に変えた場合、C7に固有の文字が挿入されるという感じにしたいです。 質問の仕方が下手でわかりにくいかも知れませんがお知恵をお貸しください。 よろしくお願いします。

  • エクセル2003でのセル内文字列操作マクロ

    あるセルにある文字列を置換し、その置換された文字列を別のセルに移すことをしたいと考えています。 <例> 0000.1111.2222.3333 ↓置換 00:00:11:11:22:22:33:33 (文字列3番目ごとににコロン挿入) 上記のように変換できるマクロメソッド、またロジックなどを教えていただけませんか?また可能でしょうか? (上記の例は逆のパターン(下の文字列から上の文字列への置換)でも結構です。) よろしくお願いします。

  • Excel 検索・置換マクロ

    検索する文字列は、AH4のセルにかいている数値とし 置換後の文字列を“無し”にしたいです。 これを実行するマクロを教えてください。 何卒よろしくお願いしますm--m Excel2003

  • エクセルのマクロで特定の文字列を選択したい

    集計表にピボットテーブルを2つ入れるマクロを作成しています。 その際に、出来あがったピボットテーブルの項目ごとの合計を 表示しないためには、対象となるセルを選択して(Select) 表示しないを選択する(Selection.Delete)ことはマクロの記録からわかりました。 しかし、ピボットテーブルの枠が固定されているわけではないので、 合計欄の選択がうまくできません。 結果的には、A列の何行目かに「B在庫」という文字列が表示されていて、 その下からピボットテーブルが作成されています。 その「B在庫」の文字列から「右に3、下に2」と「右に1、下に5」 進んだセルをそれぞれ指定して(Select)削除(Selection.Delete)したいと思っています。 どのように「B在庫」と入力された文字列を探し出すのか、 また、そこから「右に3、下に2」と「右に1、下に5」進んだセルを 指定する方法を教えていただけないでしょうか。