質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

2回答

448閲覧

データにカタカナが何文字含まれているかを調べて、フォントサイズを調節したい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

1グッド

0クリップ

投稿2023/09/05 05:26

実現したいこと

カタカナ5文字につきフォントサイズを1大きくする、というコードを記述したい。例えば、txb_社名1に入るデータが「レバテック株式会社」だとして、現在のフォントサイズが20なら21に変更したい。

前提

封筒の宛名面をレポートで作成しています。他フィールドのデータの有無や文字数によってテキストボックスの配置やフォントサイズ等の設定を変更するコードを記述しています。

発生している問題・エラーメッセージ

文字数が少ないほどフォントサイズを大きく、多いほど小さくなるように設定しているのですが、基本のフォントに「HG P正楷書体」という字詰めフォントを使用しており、同じ文字数でも詰まる文字が多いとテキストボックスの大きさに対してフォントが小さいという問題が発生します。

該当のソースコード

Option Compare Database Option Explicit Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) Const cm As Integer = 567 'twipsをcm表記に Dim txtW As Long '文字列の幅(文字列中央寄せ用) Dim txtboxW As Long 'テキストボックスの幅(文字列中央寄せ用) Dim checkCharacter As String '文字幅チェック用 checkCharacter = "一" '文字幅チェック用 Dim syamei_FontSize As Integer Dim syamei_Width As Integer Dim sm As Integer Dim sm1 As Integer '社名1の文字数 sm1 = Len(Nz(社名1, "")) sm = sm1 syamei_FontSize = 15 '氏名ありの場合の最大サイズ syamei_Width = 0.66 * cm '氏名ありの場合のテキストボックス幅 Select Case sm Case Is < 17 syamei_FontSize = 15 Case 17 syamei_FontSize = 15 Case Is > 17 syamei_FontSize = 14 End Select 社名1.FontSize = syamei_FontSize 社名1.Width = syamei_Width 社名1.Top = 1.7 * cm 社名1.Height = 9.7 * cm 社名1.Left = 6.4 * cm 社名1.TextAlign = 0 With Me.社名1 Me.FontName = .FontName Me.FontSize = .FontSize txtboxW = .Width txtW = Me.TextWidth(checkCharacter) .RightMargin = (txtboxW - txtW) / 2 End With End Sub

一部分を抜粋して掲載しています。不足情報ありましたら追記致します。

試したこと

ネット検索で「AccessVBA カタカナ 判別」等で検索しましたが、目的とする情報が載ったサイトを見つけることが出来ませんでした。

補足情報(FW/ツールのバージョンなど)

Microsoft Access2019

tatsu99👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ある文字列と、その文字列をStrConv関数で片仮名を平仮名に変換した結果とが異なれば、その文字列には片仮名が含まれている (一文字の文字列なら片仮名そのもの) ということになります。この方法で一文字ずつが片仮名かどうか調べれば、片仮名の文字数がわかります。

投稿2023/09/05 07:14

ikedas

総合スコア4443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/09/05 07:29

だいぶ回りくどいことをしなければならないようですね。。。 考え方は勉強になります
ikedas

2023/09/05 07:34

ちょっと考え過ぎか。一文字なら平仮名に変換してみるとかしなくてもLikeで調べられますね。 いずれにせよ一文字ずつ調べる必要はありますが、ループを一回まわすだけですから大したことはないです。
退会済みユーザー

退会済みユーザー

2023/09/06 01:51

コード考えてみます。ありがとうございます。
guest

0

以下参考
AutoFontSize

投稿2023/09/05 06:16

sazi

総合スコア25300

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2023/09/05 06:37

このサイトは以前拝見しましたが、逆に「何文字でもテキストボックスに収まる」というのも、レイアウトのバランスの観点から困るのです。 質問文には記述していないのですが、基準フォントサイズから10下げてもテキストボックスに収まりきらないレコードを抽出して加工するフォームを作成しています。例えば社名1フィールドの文字数が多すぎる場合、社名2・社名3にカット&ペーストで分散させるためのフォームです。
sazi

2023/09/05 15:05

>「何文字でもテキストボックスに収まる」というのも、レイアウトのバランスの観点から困るのです。 自動での調整はきりが無さそうですね。 手動でイメージ調整する事でも良いなら、OLEオブジェクトでwordとかで編集するような形にするとか。
退会済みユーザー

退会済みユーザー

2023/09/06 01:50

AutoFontSizeのコードを再確認したら最小フォントサイズを設定できるようなので、最小サイズの時に何文字以上だと見切れてしまうかを確認すれば利用できそうです。 社名テキストボックスは1~3まであり、文字数が違ってもフォントサイズを同じにするコードを考えなければなりませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問