- ベストアンサー
JISコードでの文字数・桁数制限の困りごと
- Access97を使用しており、JISコードでの文字数・桁数制限について困っています。
- JISコードでの条件は、20文字で改行し、最大25桁までの入力が可能です。
- 文字数の取得は行数の改行数を数えることで行っていますが、両方の制限を満たす方法がわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。再びmaruru01です。 ちょっと気になったので書きます。 If文のElseの部分は、改行が文末になかった場合に、一番後ろの改行より後ろに残った文を格納するための記述です。 pooh_200xさんのコードだと、この部分の文字数チェックが出来ません。(もちろん、必ず文末に改行があるなら問題はないわけですが。) 従って、とりあえず、各行ごとに配列に格納してしまって、その後であらためてループを回して、文字数を確認していった方がいいような気がします。 蛇足になってしまったらすみません。 では。
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 一応Windows改行(Chr(13) & Chr(10))として回答します。 まず、1行ずつ配列に格納します。 Dim RowData() As String Dim Str As String Dim p As Long Dim i As Long Str = Me!内容.Text i = 0 Do While Len(Str) <> 0 p = InStr(1, Str, Chr(13)) If p <> 0 Then ReDim Preserve RowData(i) RowData(i) = Left(Str, p - 1) Str = Mid(Str, p + 2) i = i + 1 Else ReDim Preserve RowData(i) RowData(i) = Str i = i + 1 Exit Do End If Loop これで、RowData(0)~RowData(i-1)に各行のデータが格納されます。 行数はiです。なお、改行は除いて格納されます。 あとは、ループをまわして、各行について文字数を調べればOKです。 参考になれば幸いです。 では。
お礼
できました! ありがとうございます。 Dim RowData() As String Dim Str As String Dim p As Long Dim i As Long Dim strChck As String Dim strMoj As String Str = Me.募集内容 i = 0 Do While Len(Str) <> 0 p = InStr(1, Str, Chr(13)) If p <> 0 Then ReDim Preserve RowData(i) RowData(i) = Left(Str, p - 1) '文字数チェック strMoj = RowData(i) strChck = LenB(StrConv(strMoj, vbFromUnicode)) Me.txtMsg = "" If strChck >= 33 Then i = i + 1 Me.txtMsg = " " & i & "行目の文字数がOverしてます。" Exit Sub End If Str = Mid(Str, p + 2) i = i + 1 Else ReDim Preserve RowData(i) RowData(i) = Str i = i + 1 Exit Do End If Loop
Windowsだと改行がASCIIコード13と10で1文字だからです。 Macの場合は13だけ、UNIXだと10だけになりますね。 #基本的にですが・・・ それ以上のことは文字コードについて調べてください。 ではでは☆
お礼
回答ありがとうございます。 質問の仕方が悪くてスミマセン。 1つのテキストボックス内で「横が(ASCII)20文字以内・縦が25行以内」 と言う条件で、文字Over(1行>20文字)の取得方法が知りたいです。 >>よろしくお願い致します。(ヒントだけでも・・・(汗;)
お礼
・・・その通りでした。(恥; ポイント発行する前に気づいて頂いて助かりました。 >その後、問題も解決し順調に動作しております。 >本当にありがとうございます。