- ベストアンサー
メルアド帳を作りたいのですが知恵を貸してください。
VBAに関して悩んでいます。 メルアド入力のプログラムを作成してるんですがいまいちVBAを理解しきれていないので教えていただけませんか? インプットボックスにメールアドレスを入力 入力されたアドレスはA列に上から順に格納されていく 格納される前に入力された文字列がメールアドレスかどうか確認するため"@"が入っているものだけOKとする。 NGだった場合は"メルアドが間違っています"とMsgBoxで確認する。 A列にメルアドが格納されると隣(B列)に入力された日付が入る。 当方かけだしで全然わかりません。 どなたか知恵をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はじめまして pride15sak さん これは初歩的な処理です(少なからず本質は兎も角として貴方の条件ならば)。駆け出しでもifぐらいはかけますよね? 正直ここで「いいえ」今から書くことがさっぱりで実装すらままならないでしょう。ですから「はい」と言って頂ける思います。 せめて貴方の考え付く限りの例文を頂けたら修正という方向で回答者も書きやすいと思います。 まぁでも良いでしょう回答者が減少する程度の問題ですから。 Sub putmail() 'インプットボックスにメールアドレスを入力 data = InputBox("put:mailaddress") '格納される前に入力された文字列がメールアドレスかどうか '確認するため"@"が入っているものだけOKとする。 If InStr(data, "@") > 0 Then endline = Range("A65536").End(xlUp).Row If endline <> 1 Then endline = endline + 1 Else _ If Range("A" & endline).Value <> "" Then endline = endline + 1 Range("A" & endline).Value = data Range("B" & endline).Value = Date Else 'NGだった場合は"メルアドが間違っています"とMsgBoxで確認する。 MsgBox "メルアドが間違っています" End If End Sub さて実行してみてください。貴方の条件は全て満たされましたはずです。 もちろん私がチェックするならばregexpを使いますが貴方には難しいでしょう。条件にもありません。 基本的に条件にない事作りません。「回答者が手間だから」そうですねそれもあります。ですが本質はそこではありません。これをどのようにどこに実行するか・実装するかわからないからです。 1番さんの心遣いがすばらしいですが少しだけ助言をするならば Range("A65536").End(xlUp).Rowは最終行ではありますがない場合1が返ります。そのため1番さんの処理ではきっと二番目から追加されて行くことでしょう。 また、gotoは極力避けましょうわかりやすい処理でも今後何に再利用するかわかりません。バグ・無限ループの元です。 さて、では何か追加・補足が必要ならばいってください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
初心者とはいえ、本質問は、丸投げの質問で、規約上、不適当。 とりあえず Sub test01() Do p1: d = InputBox("メルアド= (終了=0)") If d = 0 Then Exit Sub If InStr(d, "@") = 0 Or InStr(d, "@") = Len(d) Or InStr(d, "@") = 1 Then MsgBox "メルアド不適" GoTo p1 End If r = Range("A65536").End(xlUp).Row Cells(r + 1, "A") = StrConv(d, 10) '小文字化 Cells(r + 1, "B") = Date Loop End Sub やり方やチェックの盛り込み方は色々あると思う。 @の有無、先頭@、末尾@のチェックと、小文字化だけやった。
お礼
Range("A65536").End(xlUp).Rowは最終行ではありますがない場合1が返ります。そのため1番さんの処理ではきっと二番目から追加されて行くことでしょう。 ↑これに悩んでました。 途中まではなんとか形になっていたんですが・・・。 適切な回答感謝します。 これを参考に知識を増やしていけたらと思います。ありがとうございました。