• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBスクリプトで他条件分岐を作成したいです。)

VBスクリプトで他条件分岐を作成する方法

Wendy02の回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>no.1のパターンは編集されましたが >no.4とno.5がno.1のパターンで編集 >されてしまいました。 今、関わっている #6200348「エクセルでマクロの記録が出来ません。」側を一度、参考にしてください。9Xとか、数字と文字は違いますが、同じスタイルだと思います。もしダメなら、こちらも再検討します。

gx9wx
質問者

お礼

>もし、補足で書かれた内容で動くなら、以下のようにすればよいです。 >でも、これは、VBScript なんかじゃありません。 >前回の内容を少し替えただけです。 >今回の細かい仕様は分かりませんから、標準的な関数も使えるのかも不明では、 >なんとも言いようがありません。 このように回答をもらっており恐縮なのですが、 QNo.6198175-ANO.2の n = Value Select Case True ----省略----- Case Else Value = n End Select Next は 'Next にするだけで動作しました。(一部誤編集は除いて) (これはソフトがそうアラームしたので) QNo.6153785-ANO.2で教えていただいた、 'VBScript Dim myData Dim mValue Dim buf Const vbNarrow=8 myData = Array("41234564811114", "12345-12345", "12345678-12345", "31234567890123", "3A145677812300") For Each n In myData n = Trim(n) Select Case True ----省略----- Case Else mValue = n End Select 'MsgBox mValue Next は動作がしなかったです。でアラームも(構文が不正です)だけでした。 'VBScript Dim myData Dim mValue Dim buf Const vbNarrow=8 '削除 'myData = Array("41234564811114", "12345-12345", "12345678-12345", "31234567890123", "3A145677812300") '削除 'For Each n In myData '追加 n=Value -----省略-----  '削除 'Next '追加 Value =mValue と修正したら動作した理屈がわかりません。(ただし、一部誤編集は同じ) 誤編集についてはどちらも省略部分の条件分岐と処理の部分を修正すれば 誤編集もなくなりその理由もわかったのですが この動作する、しないが私には検討もつきません。 どうもありがとうございました。

gx9wx
質問者

補足

いろいろすいません。 サンプルは以下のように準備し結果は以下のとうりでした。 なお使用するデーターベースは他で教えてもらっている 方を利用することにしましたので 3頭→9頭 3A頭→9X頭 にしています。 1.12345678901234(先頭が9以外で14文字)     ↓   123-45678-90-12-34   (3と4、8と9、10と11、12と13桁の間に半角ハイフンを入れる)   【OK】 2.55555-55555(5ケタ ハイフン 5ケタ)      ↓   55555-55555(変換しない)   【OK】   95555-55555(先頭が9で5ケタ ハイフン 5ケタ)     ↓   95555-55555(変換しない)    【OK】     9X555-55555(先頭が9Xで5ケタ ハイフン 5ケタ)     ↓   9X555-55555(変換しない)   【OK】 3.88888888-55555(8桁ハイフン5桁)     ↓    888-88888-55555(3と4、8と9桁の間に半角ハイフンを入れる)   【OK】   988-88888-55555(先頭が9で8桁ハイフン5桁)     ↓   988-88888-55555(3と4、8と9桁の間に半角ハイフンを入れる)   【OK】   9X888-88888-55555(先頭が9Xで8桁ハイフン5桁)     ↓   9X888-88888-55555(3と4、8と9桁の間に半角ハイフンを入れる)   【OK】 4.9123456789012A(先頭が9で14桁)     ↓   91234-56789-01-2A(5と6、10と11、12と13桁の間に半角ハイフンを入れる)    が正規のところ    ↓   912-34567-89-01-2A    (3と4、8と9、10と11、12と13桁の間に半角ハイフンを入れる)    で【NG】です。   5.9X123456789012(先頭が9Xで14桁)    ↓   9X1-23456789012(3と4桁の間に半角ハイフンを入れる)   【OK】 NO.2とNO.3は3種類記載しましたが これは、質問以前にいろいろ作成していた時に 基本的に14桁。で頭が9か9Xかそれ以外でNO.1が基本編集で NO.4とNO.5で9と9Xで条件を付けていたのですが 例外パターンのNO.2とNO.3で頭が9と9Xが来た場合 全部NO.4とNO.5になってしまったので NO.2とNO.3にも9と9X頭を追加して こちらが誤編集されないようにという事で記述しました。 最初に教えていただいた記述を修正したら 質問前に苦闘していた時と同じくNO.2とNO.3にて頭に9と9Xがくると NO.4に編集されてしまう。 88888-55555 → 88888-55555 【OK】 98888-55555 → 988-88555-55 【NG】  9X888-55555 → 9X8-885-55-55 【NG】 かつ 9123456789012A →91234-56789-01-2Aになってほしいが          912-34567-89-01-2Aというのは直らずです。 で、その後、なんとか修正できて 解決しました。ありがとうございます。

関連するQ&A

  • VBスクリプトの作成方法について教えてください。

    VBスクリプトの作成方法について教えてください。 あるアプリケーションにて、VBスクリプト編集の機能が有りそれを有効にします。 でイベント用スクリプト入力欄には 【サンプル: Value = Value + "123", サブ文字列の値に123を加えます。】 となっています。 これをサンプルとうりに入力欄に Value = Value + "123" と入力したら元データが、 AAAAAAAだったのが AAAAAAA123と表示されました。 元データを以下の条件によってVBスクリプトにて変化させたい場合 VBスクリプトはどのように作成すればいいでしょうか? データは半角で英数字のみでそれが混在です。 (元データは夜間バッチで自動上書更新されるので元データファイルに  式を入れておく事は出来ません。) 1.○○○○○○○○○○○○○○(先頭が3以外で14文字)     ↓   ○○○-○○○○○-○○-○○-○○ 2.○○○○○-○○○○○(5ケタ-5ケタ)      ↓   ○○○○○-○○○○○(変換しない)   3○○○○-○○○○○(5ケタ-5ケタ)     ↓   3○○○○-○○○○○(変換しない)   3A○○○-○○○○○(5ケタ-5ケタ)     ↓   3A○○○-○○○○○(変換しない) 3.○○○○○○○○-○○○○○(8桁ハイフン5桁)     ↓   ○○○-○○○○○-○○○○○   3○○○○○○○-○○○○○(先頭が3で8桁ハイフン5桁)     ↓   3○○-○○○○○-○○○○○   3A○○○○○○-○○○○○(先頭が3Aで8桁ハイフン5桁)     ↓   3A○-○○○○○-○○○○○ 4.3○○○○○○○○○○○○○(先頭が3で14桁)     ↓   3○○○○-○○○○○-○○-○○ 5.3A○○○○○○○○○○○○(先頭が3Aで14桁)    ↓   3A○-○○○○○○○○○○○ よろしくお願いします。

  • VBスクリプトの配列数字をJAVAスクリプトで使うには

    表題があまり良くないですが VBSでページを作っています その中で ページ閲覧者がテキストボックスに値を記入したときに JAVAスクリプトのonchangeでJAVAスクリプトへ飛んで VBスクリプトで定義した配列の値を代入したいのですが うまくいきません 飛んでいった先のコードが <script type="text/javascript"> <!-- //値の代入 function hoge(FRM){ FRM.hoge1.value=ここにVBスクリプトの配列 } // --> </script> これだけのことなのですが 配列を直接数字で書くと FRM.hoge1.value=<%=atai(1)%> hoge1にはきちんと値が入力されます しかし この1と言う数字の所に FRM.hoge2.value の値をいれてやろうとすると イメージとしては FRM.hoge1.value=<%=atai(FRM.hoge2.value )%> なんですが、これではエラーがでます(当然ですよね) 色々"" でくくったり & や + ()などの 組み合わせでやってもうまくいきません どなたか正しい構文か方法を教えてください よろしくお願いします  

  • vbスクリプトについて

    Excelファイル(D:\test.xls)を再起動するvbスクリプトを作成し、 4時間おきに実行するタスクスケジュールを設定したいと思います。 ※6:00、10:00、14:00、18:00、22:00、2:00のタスクスケジュールを作成し、  vbスクリプトを実行。 次のタスクスケジュールが実行されるまでの4時間は、Excelファイル(D:\test.xls)は 開いたままの状態です。 なので、vbスクリプトで、まずExcelファイル(D:\test.xls)が開いている場合は、 「D:\test.xls」を一旦(上書き保存なしで)閉じて、再度、「D:\test.xls」を開きたいと思っています。 ※他のExcelファイルが開いている場合は、「D:\test.xls」のみ閉じる。 「D:\test.xls」を開くスクリプトはできたのですが、「D:\test.xls」を閉じるところがわかりません。 どなたか教えていただけないでしょうか。 【vbスクリプト】----------------------------------------- '「D:\test.xls」が開いている場合は閉じる  ??? '「D:\test.xls」を起動する Dim xlApp Dim xlWbk Set xlApp=CreateObject("Excel.Application") xlApp.Visible=True Set xlWbk=xlApp.Workbooks.open("D:\test.xls",True) ---------------------------------------------------------

  • VB スクリプトで

    VB スクリプトで Error : Path not found Code : 800A004C Source : Microsoft VBScript runtime error というエラーが出ます。解決方法をご存知の方、教えてください。 よろしくお願いいたします。

  • VBスクリプトでエクセルを表示

    わかる方、教えて下さい。 サーバーサイトにあるエクセルファイル(例 C:\TEMP\PAPA.XLS)をASPのVBスクリプトで表示する方法を教えて下さい。 画面で何かをクリック(リンク)したらでは無く、VBスクリプトでポップアップ画面の様に表示したいのです。 お願いします。

  • 条件式のついて

    name="before" に7桁もしくは、8桁の半角数字の value があります。 もし7桁だったら、先頭から5桁目に「0」を挿入して、8桁にして name="after" に入力します。 "before" の value が8桁ならそのまま "after" に入力します。 上記の条件式の if else 文を考えておりまして、条件式の部分で煮詰まって しまっております。 ご教示お願い致します。

  • VBスクリプトでテキストファイルの行数カウント

    VBスクリプトでテキストファイルの行数をカウントする サンプルソースを探しています。 どなたかご存知の方、教えて下さい。

  • VBスクリプトでエクセルのセルに色をつける

    VBスクリプトを使って、あるエクセルファイルを開き、一行目に色をつけたいと思っています。なかなか良いサンプルコードが見つかりません。 どなたか参考になるサイトやコードを教えて頂けないでしょうか?

  • エクセル セルの先頭の0 VBAで

    テキストファイル.txtにおける数値 たとえば01234567の8桁を エクセルファイルの(A,1)セルに移動すると 1234567と表示されてしまいます あるコードがあるとしまして 途中省略しますが ・・・・・ .Cells(A, 1).Value = Str(Mid(buf, Pos9 + Len9, Pos10 - (Pos9 + Len9))) これは あるプログラムの流れということですが これで 1234567 となってしまうので このコードのあとに Range (Cells(A, 1)) .NumberFormatLocal = "@" .Value = Format(.Value, "00000000") (この場合は 8桁とすでにわかっている場合ですが もし先頭に0がいくつ付くかわからない場合のケースも 教えていただけますか) とつけましたが エラーとなります 御教示くださいませ win10 office356

  • ジャバスクリプトについて質問です。

    ジャバスクリプトでテキストエリアに入力した文字数を表示したいのですが半角数でカウントは出来ませんか? <html> <head> <title>チェック</title> <script type="text/javascript"><!-- function tyek( str ) { document.getElementById("inputlength"). innerHTML = str.length + "文字"; } // --></script> </head> <body> <textarea cols="40" rows="9" onkeyup="tyek(value);"></textarea> <p id="inputlength">0文字</p> <br> </body> </html> 上記の設定では全角も一文字、半角も一文字でカウントされます。 例 aあ ⇒2文字 これを半角一文字、全角二文字という風に設定したいのですがどうすればいいのでしょうか?まだスクリプトを勉強しだしたばかりでよく分かりません… 回答の方宜しくお願い致します。