お世話になります。
今、エクセルシートにあるデータの空欄列を呼出し後日入力を行う為のユーザフォームを作成しました。テキストボックス2つと検索用、再登録用のコマンドボタンを用意し、TB1でIndexナンバーを入力し検索し、TB2でシートのG列空白セルに入力して再登録したいと思っています。
 Findメソッドとかやってはみてるのですが・・・

何卒、ご指南ください。

A 回答 (7件)

以下の用にしてください。


CommandButton1が検索用
CommandButton2が再登録用です。
Dim Grow As Longは選択されたG列の行を記憶します。
マクロの上部に記述してください。(このフォーム内での共有変数にします)
-----------------------------------
Option Explicit
Dim Grow As Long
Private Sub CommandButton1_Click()
Dim row, rowmax As Long
Worksheets("Sheet1").Activate
rowmax = Cells(Rows.Count, "A").End(xlUp).row
Grow = 0
For row = 2 To rowmax
If Cells(row, "A").Value = TextBox1.Text Then
Cells(row, "G").Select
Grow = row
Exit For
End If
Next
If Grow = 0 Then
Cells(1, "G").Select
MsgBox ("該当Indexなし:" & TextBox1.Text)
End If
End Sub

Private Sub CommandButton2_Click()
If Grow = 0 Then
MsgBox ("G列は選択されていません")
Exit Sub
End If
Worksheets("Sheet1").Activate
Cells(Grow, "G").Value = TextBox2.Text
MsgBox ("更新完了")
End Sub
-----------------------------------------
    • good
    • 0

FindメソッドとOffsetが使えて、あとはActiveやSelectをしないコードが書ければ良いのでは?

    • good
    • 0
この回答へのお礼

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

今後ともよろしくお願いいたします。

お礼日時:2017/06/19 06:54

>Findメソッドとかやってはみてるのですが



そこまでご存じで上手くいかないのなら、いっそコードを載せて修正やアドバイスを受けられては?

私個人の考えで言うなら

>①A列に固有の番号(INDEXナンバー)がふってあり

これを右にシフトしてB列とし、改めてA列に単純な1から始まる普通の連番を入れては?と考えましたが、
その固有番号で検索したいのなら、Findメソッドで検索可能な物であるのか否か実態がわからない事には・・・・
    • good
    • 0
この回答へのお礼

解決しました

ありがとうございました。
何とか解決しました。
やはりFindメソッドとOFFSETでいけました。

本当に助かりました。

お礼日時:2017/06/19 06:51

No4です。


シート名が不明だったので、とりあえず、Sheet1にしました。
シート名が異なる場合は、シート名を適切に変更してください。
    • good
    • 0
この回答へのお礼

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

今後とも教えて頂けたら有難いです。

お礼日時:2017/06/19 06:53

>甘えてもよろしければ、INDEXナンバーで検索とはどのようにすれば?


>現在はオートフィルタを利用しているのですが、あまり使い勝手が良くないもので。
A2から最後の行(図ではA8)まで、テキストボックスのINDEXナンバーと同じか比較します。

いずれにしろ、何をなさりたいのかが、よくわかりません。
1.1行目は見出し行であり、データ行は2行目から始まる。
2.IndexナンバーはA列、データはG列にある。
ということまでは、わかったのですが、
①テキストボックス1にIndexナンバーを入力し、検索用ボタンをクリックした時、どうしたいのか不明。
②テキストボックス1にIndexナンバーを入力し、再登録用ボタンをクリックした時、どうしたいのか不明。
③テキストボックス2にデータを入力し、検索用ボタンをクリックした時、どうしたいのか不明。
④テキストボックス2にデータを入力し、再登録用ボタンをクリックした時、どうしたいのか不明。
何をどうしたいのか、もっと具体的に提示してください。
    • good
    • 0
この回答へのお礼

ありがとう

どうも説明がへたなようで..
①A列に固有の番号(INDEXナンバー)がふってありBからF列まではデータが入力されています。
②G列はAからF入力時には空欄で後日入力します。

行いたいこと
①ユーザフォームを利用してテキストボックス1にINDEXナンバーを入力し、コマンド1で検索を行い該当行のG 列を選択させたい
②選択されたセルにテキストボックス2利用して入力し、再登録ボタンでシートG列該当行にデータが入力されるというものです。

お付き合いくださりありがとうございます。

お礼日時:2017/06/17 06:24

シートのイメージがよくわかりません。


添付のような画像を提示していただけますか。
G5、G7の箇所を検索したいのでしょうか。(赤線で囲んだ箇所)
それなら、G列の2行目から、空白セルを検索すれば良いだけです。
Indexナンバーで検索したいなら、A列の2行目からIndexナンバーで検索すれば良いだけです。
「検索と再登録」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます!!
すみません!あまりPCに不慣れなもので!
提示していただいたイメージです。
現在BからFにもデータが入っています。

甘えてもよろしければ、INDEXナンバーで検索とはどのようにすれば?
現在はオートフィルタを利用しているのですが、あまり使い勝手が
良くないもので。

宜しければ教えていただければと思っています。

お礼日時:2017/06/15 07:09

シートの状況がわかりかねますが。



重複しないIDで単純に1から始まる普通の数字をある列に並べれば、そのIDから『何行目のデータが欲しい』って
わかると思いますよ。
編集し再度登録する際にもFindで検索なんて面倒な事しなくて済みますし。
    • good
    • 0
この回答へのお礼

ありがとうございまいた。
まだ、どう処理するコードを書けばよいのか迷っているのが現状でして・・・!

お礼日時:2017/06/15 06:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング