こんにちわ。

VB5.0で、String型のデータが、全角か、半角かを判断する関数はあるでしょうか?また、判断方法を教えてください。

よろしくお願いします。

A 回答 (1件)

こんにちは。

maruru01です。

Asc関数で文字のコードを取得して判断すればいいと思います。
半角はコードが0~255だったと思うので、次のようになります。

文字変数をsとして
If 0 <= Asc(s) And Asc(s) <= 255 Then
  MsgBox "半角です"
Else
  MsgBox "全角です"
End If

ちなみに私の環境はVB6.0なので5.0では試してません。(問題ないと思いますが。)
では。
    • good
    • 0
この回答へのお礼

ありがとうございました(^^)v

できました!

お礼日時:2002/03/28 17:46

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q半角カナを全角カナに変換したい

表題の通りです。
先輩から引き継いだエクセルのデータが、全角カナと半角カナとの両方を、使い分けなどではなく使用しているものだったので、半角カナを全部、全角カナに変換したいと考えています。
置換機能で50音全部を置換するのは大変ですので、一度に変換する良い方法があれば教えてください。
また、全角アルファベットを、普通の英字(半角アルファベット?)にも変換したいと思っています。

Aベストアンサー

=JIS(セル番地)
で全角に
=ASC(セル番地)
で半角になります。

QVB6.0のString関数に代わるVB2008のそれは?

2009年1月27日にVB 2008Expressをダウンロードしたばかりの初学者です。
ですから、色々とわからないことだらけです。
で、今回は VB6.0のString関数に代わるVB2008のそれ。

? String(12, "*")
************

Function Strings(ByVal C As Char, ByVal L As Integer) As String
  Return Space(L).Replace(" ", C)
End Function

少しは探しましたが、適当なのがなくてStrings関数を作成してしまいました。
2週間程度の初学者。
しかも、文字列関連のヘルプは昨日に初めて紐解いたばかり。
ですから、「適当なのがない」との判断はかなり怪しいものです。

そこで、「VB6.0のString関数に代わるVB2008のそれは、これですよ!」という回答をお願いします。

Aベストアンサー

'ああっ、思いっきり書き間違えてるorz

'5を外に出した
Dim s2 As String = new String(Char.ConvertFromUTF32(42),5)

'文字数を書くの忘れてる
Dim s3 As String = New String("ABC".toCharArray()(0),5)

Q全角半角変換 C++/CLI

C++/CLI(VC++2008) で
(1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか
(2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか
 

Aベストアンサー

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

array<wchar_t>^ b2 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p2 = &b2[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, p1, -1, p2, b2->Length);
String^ s2 = gcnew String(p2);

array<wchar_t>^ b3 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p3 = &b3[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, p2, -1, p3, b3->Length);
String^ s3 = gcnew String(p3);

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

a...続きを読む

QVB6.0 String型→Long型変換方法について

Visual Basic6.0を使用しています。
String型の値をLong型へ変換したいのですがどうやればよろしいでしょうか?
①→②のように変換したいです。

s は String型変数
l は Long型変数


s = "aaa"  'aaaは任意の値


l[0]=0x6161
l[1]=0x0061

Aベストアンサー

こんばんは。

s = "aaa"  'aaaは任意の値
0x というのは、16進ですから、
Long 型の配列に格納するためには、一度、10進に戻さないといけません。

>l[1]=0x0061
このままでは入りません。0x0061 は、10進で97 です。
つまり、文字をコードに変換すればよいわけです。
0x0061 自体は、格納しようにも、16進ですから、Long型変数には格納できません。

Dim s As String
Dim buf
Dim ret
Dim i As Long, j As long
Dim l(9) As Long
 s = "aaa"
 For i = 1 To Len(s)
  a = Mid(s, i, 1)
  buf = AscW(a)
  l(j) = buf
  j = j + 1
 Next

後の問題は、逆に戻す時でしょうね。

For i = 0 To UBound(l)
 buf1 = buf1 & ChrW(l(i))
Next

私が、質問の内容から思いつくのは、このぐらいです。

Qワードで数字の全角を半角に(カタカナは全角のままで)変換するには?

ワードに100ページの文章があります。全角数字が散在しています。全角数字を半角に直したく、半角操作をかけるとカタカナも半角に変換されてしまいます。数字だけ変換されるようにするには、どのようにしたらいいのでしょうか。ワードの、書式メニュー→文字種の変換→半角、で操作をおこないました。

Aベストアンサー

メニューの[編集]→[検索]又は[Ctrl+F]で検索タブが開きます。

[検索する文字列]に[0-9]
(0、9、は全角。[ ]、-、は半角)

[見つかったすべての項目を強調表示する]にチェックを入れます。

[オプション]ボタンを押し[検索オプション]が開きます。
[ワイルドカードを使用する]にチェックを入れると[あいまい検索]のチェックが外れます。

[すべて検索]ボタンを押して、文書の中の全角数字の全てが選択状態になったら、
メニューの[書式]→[文字種の変換]→[半角]を選択します。

QVBAでの全角数字と半角数字の判断について

はじめまして、こんにちは。VBAのプログラムについて教えて欲しいのですが、「ぐう1」のように文字列の一番後ろの数字を削除するプログラムを作成したいです。asc関数を利用して

str="ぐう1234"
StrLenNum = Len(str)
If Asc(Right(str, 1)) >= 48 And Asc(Right(str, 1)) <= 57 Then
str = Left(str, StrLenNum - 1)

としたのですが、これでは
「ぐう1」という全角数字に対応することができませんでした。
全角文字に対応するにはどうすればよいでしょうか?
よろしくお願いします。

Aベストアンサー

If Asc(Right(str, 1)) >= 48 And Asc(Right(str, 1)) <= 57 Then
str = Left(str, StrLenNum - 1)



If Asc(StrConv(Right(str, 1),vbNarrow)) >= 48 And Asc(StrConv(Right(str, 1),vbNarrow)) <= 57 Then

に変更してやればいいです。

Qキーボードでの「英数(全角/半角)」変換

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になってしまうわけです。
 具体的には、まず「英字の全角」と「和字の全角」の相互変換ですが、うまくいっているときは、通常和字にしているときキーボードの「英数・CapsLock」を押すだけで「英字全角」に変換できます。また押せば、元に戻せます。しかし、何かの拍子で、このキーを押すと、「英字の半角」になってしまい、どうしても「英字の全角」になりません。しかし、時間が経って、いつのまにか、相互変換できるように戻っていることもしばしばです。
 「英字の半角」はキーボード上部の「半角/全角」キーで「英字半角」と「和字全角」とが相互変換できるので、「英数・CapsLock」キーでは、「和字全角」と「英字全角」の相互変換を維持したいわけです。というより、このキーの操作を、どちらも使えるよう、自分でコントロールしたいわけです。
 自分でコントロールするためには、「英数・CapsLock」キーを押すと、何かの拍子で、「英字全角」になったり「英字半角」になったりする、その「何かの拍子」が分かればいいと思うのですが、それが、分かりません。
 PCの種類によって、キーボード操作は違うのかもしれませんが、一つ、よろしくお願いいたします。

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になっ...続きを読む

Aベストアンサー

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れませんが、次の点です。
「全(半)角英数」モードで入力作業をした後、「ひらがな」に復帰することなく、[半角/全角]によって「直接入力」モードにすると、
次に「ひらがな」に復帰しようとしても、[半角/全角]を押したのでは戻れず、「全(半)角英数」になるだけです。
この場合、その上で[Caps Lock]を押せばいいのですが、「直接入力」から[カタカナ ひらがな]を2回押す方法もあります。
とにかく、[半角/全角]を何度押しても行ったり来たりするばかりで、「ひらがな」には戻れません。

御参考までに、次のような操作法も考えられます。
1.「ひらがな」→「全(半)角英数」は[Caps Lock]
2.「ひらがな」→「直接入力」は[半角/全角]
これは当たり前ですね。

3.「全(半)角英数」→「ひらがな」は[カタカナ ひらがな]
4.「直接入力」→「ひらがな」も[カタカナ ひらがな]
 * 1回押して「全(半)角英数」になったときは、続けてもう1回押す。
 (ややこしければ、常に2連打することにしてもよい。)

つまり[半角/全角]や[Caps Lock]をON/OFに使うのではなく、それぞれ一方通行にしておいて、
「ひらがな」に復帰するときはいつも[カタカナ ひらがな]を使うという方法です。

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れ...続きを読む

QVB2008で全角半角の判定

VB2008で全角半角の判定
VB6 では下記のようにして判定していましたが、VB2008では
どのようにすればよいのかお教えください。

 dim moji as string
dim zhN as integer
 zhN = LenB(StrConv(moji, vbFromUnicode))

mojiには1文字格納されており、
 半角なら zhN = 1 全角なら zhN = 2
となる。

 これをVB2008で実現する方法がわかりません。
 よろしくお願いします。

Aベストアンサー

zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)

zhN = System.Text.Encoding.GetEncoding(932).GetByteCount(moji)

zhN = System.Text.Encoding.Default.GetByteCount(moji)
は同じ意味です。
エンコーディング名"ShiftJIS"のIDが932番です。
1番上はエンコーディング名よりIDを取得し、IDから情報を取得します。
2番目はIDから情報を取得します。
3番目はデフォルト(初期設定時の選択言語が日本語であればShift-JIS)で使用されている情報を使用します。

取り出す手間がかからない分、下に行くにつれて速度が上がります。

さらに蛇足ですが、エンコーディングとはどの文字コード(エンコード)に対応付けするかを意味します。
文字コード表は見たことありますでしょうか?
ASCIIコード表あたりが見やすいので検索してみてください、イメージがつかめます。
コンピュータは、例ですが(1,1)は'a'、(1,2)は'b'といった具合に番地に文字が割り当てられている表を使用し、バイトデータを文字に置き換えています。

VBなどで使用されている文字コードはユニコードです。
ユニコードは最大4byteで一文字をあらわします、ShiftJISは最大2byteで文字をあらわします。
ユニコードでは"あ"は3byteですが、シフトジスでは2byteです。
別の文字コードにEUCがありますが、
EUCで半角文字の"ア"は2byteですが、シフトジスでは1byteとなります。

.NETFrameworkでは複数の文字コード表に対応しています、そのため、エンコードを指定してバイト数を取得する必要が出てきました。

zhN = System.Text.Encoding.GetEncoding("ShiftJIS").GetByteCount(moji)

zhN = System.Text.Encoding.GetEncoding(932).GetByteCount(moji)

zhN = System.Text.Encoding.Default.GetByteCount(moji)
は同じ意味です。
エンコーディング名"ShiftJIS"のIDが932番です。
1番上はエンコーディング名よりIDを取得し、IDから情報を取得します。
2番目はIDから情報を取得します。
3番目はデフォルト(初期設定時の選択言語が日本語であればShift-JIS)で使用されている情報を使用します。

取り出す...続きを読む

QALT+半角/全角を押さなければ、文字を変換できません。

PCを立ち上げ、文字を最初に入力しようとすると、英数字で入力されます。

そこで、日本語に変換しようとするのですが、ALT+半角/全角を押さなければ、文字を変換できません。


その後は、半角/全角を押すだけで、変換できるようになります。



一番初めから、半角/全角を押すだけで、変換できるようにするためにはどうすればいいですか?



PC
dell 1525
WindowsVista Home Premium
http://www.sd-dream.com/pasocompass/PC/Dell/Inspiron1525.html

Aベストアンサー

自分の場合は既定の言語を
”日本語(日本)-日本語”から
”日本語(日本)-Microsoft IME”
にしたら半角/全角だけで変換できるようになりました。

QVBで「全角」文字を「半角」にしたいのです

WORDで、文章中の段落ごとのつけた数字([0001]…[0054]…)を連番に置換する「Visual Basic」のマクロを利用し始めたのですが…

元のマクロコードでは全角を扱っていて、たとえば【0015】→【0012】に置換するようになっており、これを半角[0015]→[0012]にしたいのです。

問題のマクロコードです。〔(1)と(3)のコードを変更しました。〕
 (1) .Text = "[^#^#^#^#]"        ←【^#^#^#^#】を変更しました
 (2) .Replacement.Text = ""
    :
★(3) AddStr = "[" + StrConv(Format(Num, "0000"), vbWide) + "]"
    :
 (4) If Flg_Conv = 1 Then
 (5) MsgBox StrConv(Num - 1, vbWide) + "個の番号を置換しました", , Msg_Title
 (6) Else

(3)のところで数字が「全角」になるようになっていると思うのですが、これをどのように変更すれば、半角の数字になるのでしょうか?

よろしくお願いします。

WORDで、文章中の段落ごとのつけた数字([0001]…[0054]…)を連番に置換する「Visual Basic」のマクロを利用し始めたのですが…

元のマクロコードでは全角を扱っていて、たとえば【0015】→【0012】に置換するようになっており、これを半角[0015]→[0012]にしたいのです。

問題のマクロコードです。〔(1)と(3)のコードを変更しました。〕
 (1) .Text = "[^#^#^#^#]"        ←【^#^#^#^#】を変更しました
 (2) .Replacement.Text = ""
    :
★(3) AddStr = "[" + StrConv(Form...続きを読む

Aベストアンサー

全角を半角にする場合は、
data=StrConv("ABC",vbNarrow)とすると
data="ABC"に変わるはずです。
vbWideは半角→全角です。


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

人気Q&Aランキング

おすすめ情報