半角入力
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
101024
投稿数: 13
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
お世話になります。
入力エリアに半角英数のみ入力としたいのですが、実現可能でしょうか?
漢字入力のプロパティを5にすると初期表示は半角カナになるのですが、変換キーを押す事によって全角文字を入力できてしまいます。
半角英数のみ入力可能とするか、判定によってエラーとしたいです。
宜しくお願いします。
入力エリアに半角英数のみ入力としたいのですが、実現可能でしょうか?
漢字入力のプロパティを5にすると初期表示は半角カナになるのですが、変換キーを押す事によって全角文字を入力できてしまいます。
半角英数のみ入力可能とするか、判定によってエラーとしたいです。
宜しくお願いします。
投票数:0
平均点:0.00
mf5235
投稿数: 6
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
入力した値の文字数と入力した値をHAN関数で変換した文字数を比較して同じ文字数ならOKとし異なれば全角が入力されたと判断できます。
IF(LEN(TRIM(判断したい項目))=LEN(HAN(TRIM(判断したい項目))),'OK','NG')
のような感じです。
実際の記述とは異なりますが上の式で'OK'なり'NG'が帰ってきます。
LEN関数は実際の文字数ではない値(全角なら1文字なら2)でバイト数が帰ってきます。
IF(LEN(TRIM(判断したい項目))=LEN(HAN(TRIM(判断したい項目))),'OK','NG')
のような感じです。
実際の記述とは異なりますが上の式で'OK'なり'NG'が帰ってきます。
LEN関数は実際の文字数ではない値(全角なら1文字なら2)でバイト数が帰ってきます。
投票数:0
平均点:0.00
mf5235
投稿数: 6
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
先ほどの条件間違えていました。
IF(LEN(TRIM(判断したい項目))*2=LEN(ZEN(TRIM(判断したい項目))),'OK','NG')
のような感じです。
全てが半角ならZEN関数ぜ全角にした結果のバイト数が半角時に倍になると言う条件で判断しています。
HAN関数を使うとひらがなや漢字の時に正しく判断できませんでした。
間違った情報を書いてしまい申し訳ありません。
IF(LEN(TRIM(判断したい項目))*2=LEN(ZEN(TRIM(判断したい項目))),'OK','NG')
のような感じです。
全てが半角ならZEN関数ぜ全角にした結果のバイト数が半角時に倍になると言う条件で判断しています。
HAN関数を使うとひらがなや漢字の時に正しく判断できませんでした。
間違った情報を書いてしまい申し訳ありません。
投票数:0
平均点:0.00
sk0014
投稿数: 37
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
半角英数モードは、漢字入力を8にします。
その上で、mf5235さんのアドバイスの通りにエラーチェックして、さらに仮名を排除するのに、ZKANA関数で変換前と変換後が違っていたら仮名が含まれていると判断できるのではないでしょうか。但し、ZKANA関数では半角カナは変換できませんので、ZEN関数で全角に変換してからになるでしょう。
その上で、mf5235さんのアドバイスの通りにエラーチェックして、さらに仮名を排除するのに、ZKANA関数で変換前と変換後が違っていたら仮名が含まれていると判断できるのではないでしょうか。但し、ZKANA関数では半角カナは変換できませんので、ZEN関数で全角に変換してからになるでしょう。
投票数:0
平均点:0.00
101024
投稿数: 13
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
返信ありがとうございます。
確認してみましたところ上手く判断出来ない場合があります。。。
『ガギグゲゴ』や『パピプペポ』のような濁点、半濁点が存在する場合です。
濁点はZEN関数で変換しても1バイトで返ってくるようです。
その為、例えば『デンキ』と半角で入力するとバイト数が違うことになってしまいます。
以上、宜しくお願いします。。。
確認してみましたところ上手く判断出来ない場合があります。。。
『ガギグゲゴ』や『パピプペポ』のような濁点、半濁点が存在する場合です。
濁点はZEN関数で変換しても1バイトで返ってくるようです。
その為、例えば『デンキ』と半角で入力するとバイト数が違うことになってしまいます。
以上、宜しくお願いします。。。
投票数:0
平均点:0.00
mf5235
投稿数: 6
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
確かに、濁点や半濁点が正しい順序で出現するとZEN関数を使って変換後のバイト数は上手く判断できないようです。
インチキ臭いかも知れませんが、INSTR関数でも使って濁点と半濁点の数は減らした値を二倍して全角変換後のバイト数と比較してみてはどうでしょうか?
但し、この方法も完璧ではないですが・・・
たとえば'ア゙'のようなありえない文字が入力された場合は多分だめでしょうが・・・
ありえない文字列はあきらめるなら上記の判断を加えれば実現できそうかと思います。
インチキ臭いかも知れませんが、INSTR関数でも使って濁点と半濁点の数は減らした値を二倍して全角変換後のバイト数と比較してみてはどうでしょうか?
但し、この方法も完璧ではないですが・・・
たとえば'ア゙'のようなありえない文字が入力された場合は多分だめでしょうが・・・
ありえない文字列はあきらめるなら上記の判断を加えれば実現できそうかと思います。
投票数:0
平均点:0.00
s_nagura
投稿数: 109
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
こんにちは。
文字列を1バイトずつ取り出して、
Range(取り出した文字,'A','Z')
Range(取り出した文字,'a','z')
Range(取り出した文字,'0','9')
全ての文字がこれらの条件を1つ満たしたらOK、というのはどうでしょうか。
文字列を1バイトずつ取り出して、
Range(取り出した文字,'A','Z')
Range(取り出した文字,'a','z')
Range(取り出した文字,'0','9')
全ての文字がこれらの条件を1つ満たしたらOK、というのはどうでしょうか。
投票数:0
平均点:0.00
furu0228
投稿数: 15
![新米 新米](../../uploads/rank3e632f95e81ca.gif)
半角入力する項目の書式に「S」では駄目でしょうか?
半角10桁であれば、書式:S10
Magic.iniのどこかのセクションに特別フラグを記述しないと
機能しなかったかもしれません。
無責任モードで申し訳ありません。。。
半角10桁であれば、書式:S10
Magic.iniのどこかのセクションに特別フラグを記述しないと
機能しなかったかもしれません。
無責任モードで申し訳ありません。。。
投票数:0
平均点:0.00