- ベストアンサー
関数教えてください。
VBであるブロックに入力”メールアドレス”を入力するのですが、”@”がなかったら「メールアドレスを入力しなおしてください」と表示したいです。 (1) Function checkEMail(EMailStr) checkEMail = (InStr(1,EMailStr,"@") > 0) and End Function でとりあえず@が無い物には表示できるのですが、この条件だと、メールの最後に@が入ってる場合は通ってしまいます。伝授ください。
- kyo----
- お礼率94% (324/342)
- Visual Basic
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
checkEMail = (InStr(1,EMailStr,"@") > 0) and (InStr(1,EMailStr,"@") < len(EMailStr)) こんな感じでどうでしょう?
その他の回答 (2)
Function checkEMail(EMailStr) As Boolean Dim i As Integer '変数iを整数型で宣言 i = InStr(1, EMailStr, "@") '何度も使うので変数へ代入 '1つ目の条件:先頭の@をチェックするため1以上に '2つ目の条件:lenは文字列の長さ、つまり最後に@があるかチェック '3つ目の条件:2つ目の@をチェック checkEMail = (i > 1) And (i < Len(EMailStr)) And (InStr(i + 1, EMailStr, "@") = 0) End Function こんな感じでしょうか。
お礼
venzoさん!分かりやすいご回答本当にありがとうございました! 本当に助かりました! ありがとうございました!
- imogasi
- ベストアンサー率27% (4737/17068)
aa@s asss@ ass a@a @as as@ のデータに対し(エクセルVBAでやりましたが) Sub test01() For i = 1 To 7 s = Trim(Cells(i, "A")) p = InStr(1, s, "@") Select Case p Case 0 Cells(i, "B") = i & "行目 @なしERR" Case 1 Cells(i, "B") = i & "行目 @が最初ERR" Case Len(s) Cells(i, "B") = i & "行目 @が最後ERR" Case Else Cells(i, "B") = i & "行目 OK" End Select Next i End Sub で aa@s 1行目 OK 2行目 @なしERR asss@ 3行目 @が最後ERR ass 4行目 @なしERR a@a 5行目 OK @as 6行目 @が最初ERR as@ 7行目 @が最後ERR をご参考に。
お礼
早速のご回答ありがとうございました! 何とか解けました! 本当に助かりました!
関連するQ&A
- Console.ReadLineが有効にならない
VB2008で下記の記述を入れてみました。 Sub test() Dim inStr As String Dim inNum As Double ' キーボードから入力 Console.WriteLine("実数を入力") inStr = Console.ReadLine() ' 文字列を実数に変換 If (Not inStr = "") Then inNum = Double.Parse(inStr) inNum = inNum / 2 ' 結果を表示 Console.WriteLine("結果:" & inNum) End Sub この場合, 上記Console.RealLine()で キーボードから入力ができるとの解説が、 いろりろ出ていますが、小生のプログラムでは、入力できず、上記"結果"を表示して、 終了してしまい困っています。 VB2008のオプションで環境などを調べたのですが、よくわかりません。 どなたか、ご存じの方がいらしゃれば、ご指導をお願いいたします。 当方の環境 OS Vistaです。 OS Xpで行っても同じでした。 VB2008は、Visual Studio 2008 です。上記OSには、同じ環境で行っています。
- ベストアンサー
- Visual Basic
- 超初心者です。シングルクォーテーションとカンマが出ればmsgboxにエラーを表示するプログラム。
いつもありがとうございます。現在VB.NETでつまずいているところがございます。プログラム暦1ヶ月ですのでわからないことだらけです。 以下のソースを引数を使って短くしたいのですが、よくわかりません。引数についてわかりやすくご指導いただけるとありがたいです。宜しくお願い致します。 Me.errmojichk()はシングルクォーテーションもしくわカンマがあればメッセージボックスにエラーを表示させ、intchk=1を入れる関数です。 Private Function mojichk() As String Private mojik As String InStr(Me.txt_顧客名.Text, "'") Me.errmojichk() If Me.intChk = 1 Then Me.txt_顧客名.Focus() Exit Function End If mojik = mojik + InStr(Me.txt_住所1.Text, "'") Me.errmojichk() If Me.intChk = 1 Then Me.txt_住所1.Focus() Exit Function End If 'シングルクォテーションのチェック------------------ここまで 'カンマのチェック------------------ mojik = InStr(Me.txt_顧客名.Text, ",") Me.errmojichk() If Me.intChk = 1 Then Me.txt_顧客名.Focus() Exit Function End If mojik = mojik + InStr(Me.txt_住所1.Text, ",") Me.errmojichk() If Me.intChk = 1 Then Me.txt_住所1.Focus() Exit Function End If End Function
- ベストアンサー
- Visual Basic
- TreeViewのスクロール制御
VB6でTreeViewコントロールのスクロールをプログラム側から制御する物を作っているのですが分からなくて困っています。 TreeViewでNodeが増えれば自動的に表示されるスクロールバーは表示をしないように「Scrollプロバティ」にFalseを入力してSendMessageで下記の方法で行ったのですがスクロールしません。 Private Sub Command1_Click() Call SendMessage(TreeView1.hwnd, WM_VSCROLL, MAKEWPARAM(SB_THUMBPOSITION, sPos), 0) End Sub Private Function MAKEWPARAM(LOWWORD As Long, HIWORD As Long) As Long MAKEWPARAM = (LOWWORD And &HFFFF&) Or (HIWORD * &H10000) End Function 「Scrollプロパティ」にTrueを設定すると問題なくできるのですが、どなたか分かる方がいましたら宜しくお願い致します。
- 締切済み
- Visual Basic
- Instr関数とLike演算子を組み合わせを教えて
Instr関数とLike演算子を組み合わせたものでループさせたい(VBA) Instr関数で複数のOr条件を満たすものを印刷と表示させ、Like演算子でワイルドカードであいまい検索で一致するものも印刷と表示させたいのですが上手くいきません。 本当はInstr関数とLike関数を組み合わせたいのですが調べても出てこず困っております。 どなたかお教えいただけないでしょうか? ちなみにVBA初心者です、、 Sub 印刷() Dim SHEETNAME As String Dim n As Long SHEETNAME = ActiveSheet.Name 'データ数の確認 S = Sheets(SHEETNAME).Range("c1000").End(xlUp).Row '(1)標準製品かつ第一産業かつ-の右側がJのもの と (2)標準製品かつ第二産業のもの のみ印刷(13列目は製品区分、10列目は会社名、4列目は型式名称) For n = 3 To S If InStr(Sheets(SHEETNAME).Cells(n, 13).Value, "標準製品") > 0 And Sheets(SHEETNAME).Cells(n, 10).Value = "第一産業" And _ Right(Left(Sheets(SHEETNAME).Cells(n, 4).Value, InStr(Sheets(SHEETNAME).Cells(n, 4).Value, "-") + 1), 1) = "J" Or _ InStr(Sheets(SHEETNAME).Cells(n, 13).Value, "標準製品") > 0 And InStr(Sheets(SHEETNAME).Cells(n, 10).Value, "第二産業") > 0 Then Sheets(SHEETNAME).Cells(n, 12) = "印刷" Else: Sheets(SHEETNAME).Cells(n, 12).Value = Delete End If Next '型式名称にOOPPが含まれるもののみ印刷(4列目は型式名称) For n = 3 To S Dim strValue As String Dim strPattern As String strValue = "Cells(n, 4).Value" strPattern = "*OOPP*" If strValue Like strPattern Then Sheets(SHEETNAME).Cells(n, 12) = "印刷" Else: Sheets(SHEETNAME).Cells(n, 12).Value = Delete Next End Sub
- 締切済み
- Visual Basic
- メールアドレスが正しく表示されない
お問い合わせのページでメールアドレスnqc441841@・・・・・と入力したらmailto:nqc441841%40・・・・・と表示されてしまいます(確認のページでメールアドレスはnqc441841@・・・・・と表示されますが) @が%40になるのは何が原因なのでしょうか
- 締切済み
- その他(メールサービス・ソフト)
- BootCamp上のWindows操作方法
MacBookPro 13inch(Ver10.6.6)にWindows XPを入れました。 起動したと、普通にiSightやAirMacなどは使えるようになったのですが、キーボードに半角全角キーがないことや@マークの入力にこまっています。Outlook Expressでメールアドレスを入力するときに@を全角(これも全角で入力しています)でしか入力できず(アットといれて変換してます)メールアドレスサーバーに接続できませんでしたとなります(半角ならOK)。 BootCamp上でMacと全く(もしくはほとんど)同じくキーボードを使えるようにする方法、もしくは機能・フリーソフトはありませんか? ソフトの場合は無料が条件です。
- ベストアンサー
- その他(ITシステム運用・管理)
- Excel関数、VBA
A列に数字を入力するとB列に合計が出るようにしたい。 但し、条件があります。 数字の入力範囲はA1からA20まで。 B列の合計はA列の数字が連続した部分の最後に表示。 例 A列 B列 10 10 10 30 20 20 10 30 40 上記のように数字の入力は1行だけの時もあり、5行の時もあるので次の空欄までの合計をB列に表示したい。 VBでも関数でも構いませんので、どなたか詳しい方教えて下さい。
- ベストアンサー
- Visual Basic
- Excelユーザー定義関数が書き込まれているセルアドレス
Excelのユーザー定義関数で、自分自身が書き込まれているセルのアドレスって取得出来るのでしょうか? 例えば、 Function test(MyString As String) As String test = "入力された文字は、「" & MyString & "」です" End Function とユーザー定義関数を作り A1のセルに =test("てすと") と書くと 入力された文字は、「てすと」ですと出てきます。 そこで、ユーザー定義関数のなかで、ユーザー定義関数を呼び出した式が入力されている(上記の例ですと、「A1」)アドレスを取得する方法ってありますか? どなたか、詳しい方いらっしゃいましたら教えてください。
- ベストアンサー
- オフィス系ソフト
- Americas Army3の登録の際のメールアドレス入力について
AA3を登録しようとして、ダウンロードし登録しようとしましたが、メールアドレスを入力する際、@を入力すると緑色のバーが表示されて入力できません。 どうすればいいのでしょうか。 よろしくお願いします。
- ベストアンサー
- オンラインゲーム
- 【エクセル】 関数による電子メールアドレスチェック
電子メールアドレスに許可された文字列だけが使用されているかを関数のみでチェックしたいと考えています。 条件:使用可能文字列がa~zの英字と「@(アットマーク)」と「.(ドット)」 例(1) A1セル : abc@xxx.jp であれば「0」を表示 例(2) A1セル : abc@().jp であれば「1」を表示 色々試してみたりしたのですがうまくいかず…。 よろしくお願いいたします。
- 締切済み
- その他(プログラミング・開発)
補足
venzoさん!早速のご解答本当にありがとうございます!ちなみに"len"関数の部分はどういういみなのでしょうか?もう一つだけご教授頂きたいのですが、@が複数ある際もエラーを返したいのですが、どうすればいいでしょうか?ご教授ください。