
質問票をExcel VBAで作成、各設問に対する回答はラジオボタン(YES/NO/NA)で選択、NOの場合だけテキストボックスを表示仕組みなのですが、テキストボックスがセルときちんと連動しない時があって困ってます。
詳しく言うと、各設問に対する回答をラジオボタン(YES/NO/NA)で選んでもらい、NOの場合だけ、その理由をテキストボックスに書いてもらう仕組みで、YesまたはNAが選ばれた場合には(フォームをすっきり見せたいため)、テキストボックスを隠します。
ただそのテキストボックス(やラジオボタン)がきちんとセルと連動してくれないときがあります。(きちんと動いた場合のスクリーンショットを添付したのでご確認ください。)微妙に上下にずれてしまいレイアウトが崩れるときがあって困っています。いつ動いているのか、どういうときに動いてしまうのか等のパターンが全然分かりません。
<ロジック>
Yes/No/NAのラジオボタンのデフォルトはNoで、すべての設問に対しテキストボックスは表示しておきます。テキストボックスは9行にわたって配置していて、YesまたはNAのクリックイベントによって、その9行の非表示、およびテキストボックスを非表示設定をコントロールしています。
正常に動いているケースのスクリーンショットを添付しましたので、ご確認お願いします。
また、すべてのテキストボックスおよび(”種類”の)ラジオボタンの Placement プロパティは、2(Move but don't size with cells)に設定しています。
この質問票使用時にはパスワードでシート保護もしています。(保護対象外はロック/アンロックされたセルと行)
開発環境:Excel2010 (Version: 14.0.6023.1000(64-bit))
ファイル保存形式:Excel 97-2003 Workbook (*.xls)
<ソース>
表示する場合(Noが選択)の関数が下記です。非表示の場合も同様のつくりです。
ラジオボタンのクリックイベント内から下記Subプロシージャが呼ばれます。
Private Sub Set_Visible(ByVal j As Integer, ByVal k As Integer, ByVal m As Integer)
i_RowNumber = (ここでパラーメータの変数を使って値をセット)
ActiveSheet.Rows(i_RowNumber & ":" & i_RowNumber + 9).Hidden = False
For i = 1 To 3
ActiveSheet.OLEObjects("TextBox" & j & "_" & i).Visible = True
Next i
For i = 4 To 7
ActiveSheet.OLEObjects("RadioBtn" & j & "_" & i).Visible = True
Next i
End Sub
※各テキストボックス、ラジオボタンの名前が TextBox1_1やRadioBtn1_4等としているため、For文でまわしてます。
基本的にこのコードで正しく動作しています。ただ、何かの加減でテキストボックスやラジオボタンが予期せぬところに表示されるので、コードの問題というよりは何か不安定要素が絡んでいるのではないかと思ってます。
左右に動く症状は見かけておらず、上下に少し動いて、(添付ファイルを参照ください)”理由1”や”関連リンク”といったテキストボックスのすぐ上に配置した文字を隠してしまったりします。
この症状はわたしのPCだけでなく、他の人のPCで動作確認しても、起きたり起きなかったりします。
この不安定な動作の修正方法が見つからず、ここ二週間ほど困っています。もしどなたか、修正案、もしくは、このロジックを見てもっとシンプルな代替案があれば、是非教えていただけると助かります。
※質問するのは初めてなので不備がありましたら遠慮なくご指摘いただけると助かります!

A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
テキストボックスのサイズが変わるのは
Autosize プロパティがtrueになっているからでしょう。
位置がずれるのは(*大きくずれるのだとすれば)
コントロールの書式設定 → プロパティ → ・・・・移動しない。
にチェックが入っているか確認してください。
少しのずれは表示倍率を変更するのが原因かもしれません。
(縮小した時に少しずれるのだったような気がします。)
この回答への補足
ご回答ご協力ありがとうございます。返信が遅くなり申し訳ありません。(回答を受け取るとNotificationを受け取れるものと勘違いしていました…)
Autosizeプロパティはfalseに設定しています。
また、(すみません…英語エクセルなので日本語のプロパティ名が分かりかねますが)Placement プロパティは、2(Move but don't size with cells)に設定していました。
これを動かない設定にしてしまうと、テキストボックスを非表示にした際、表示がおかしなことになってしまうので。
そして恐らくプロパティ等の設定の問題ではないとにらんでます。というのは、問題なく動くときもあれば動かないときもあるので、静的要因ではないと思うのです・・。
あと表示倍率によるズレは認識できてます。そこは本件にはからんでなさそうです。
いずれにしても、ご回答ありがとうございます!
No.1
- 回答日時:
Excelなのはパソコンのスペックなのか
描画が上手くいかないとかではないのかな?
図形を駆使して資料を作った時にも変なところに移動してしまい、
修正が大変だった事はありますね。
ユーザーフォームを用いた方が安定するかもしれませんよ。
御礼が遅くなり申し訳ありません。(回答を受け取るとNotificationを受け取れるものと勘違いしていました…)
おっしゃるとおり、わたしもスペックの問題が大きいと思ってます。
今回、90個近くのテキストフィールドが1シートに載っているので、設計ミスかな、と感じてます。
ユーザフォームの方が安定するとは知らなかったので、今後の参考になりました!どうもありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの画像にツールチップ...
-
Wordテキストコントロールが未...
-
MSFlexGrid
-
C# TEXTが空白であるLABELは何...
-
ADOのCursorLocationプロパティ
-
ユーザーフォームに日付を表示...
-
VB6でLabelの最前面にText Box...
-
VB2005 コードでのコントロー...
-
テキストボックス(VBA)でEnter...
-
MFCでbitmapを背景にしてstatic...
-
DataGridViewで行の展開みたい...
-
エクセル VBA ユーザーフォーム...
-
VBのBackColorの統一手法について
-
中国文字のプログラムでの取り扱い
-
テキストボックスがセルと連動...
-
VB.NETで縦書表示をしたいので...
-
C# のテキストボックスデザイン...
-
Chartコントロールを使用しての...
-
日時や時刻を指定し、その時間...
-
ListViewでのリスト表示(初歩...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックス(VBA)でEnter...
-
Wordテキストコントロールが未...
-
エクセルの画像にツールチップ...
-
ユーザーフォームに日付を表示...
-
C# TEXTが空白であるLABELは何...
-
エクセル入力規制リスト行数
-
MSFlexGrid
-
コンボボックスの高さを変更し...
-
ACCESS2010 ActiveXコントロー...
-
Enabled=Falseのテキストボック...
-
VB6でLabelの最前面にText Box...
-
ADOのCursorLocationプロパティ
-
DataGridViewで行の展開みたい...
-
checkbox付きListViewで デフ...
-
VB2005 コードでのコントロー...
-
チェックボックスの文字色の変え方
-
VB6でPNGファイルを扱うには?
-
PictureBoxの背景色変更(VB.NET)
-
VB.NETで縦書表示をしたいので...
-
MFCでbitmapを背景にしてstatic...
おすすめ情報