
アクセス2007です。
フォームにタブコントロール(タブ0)を置きました。
テキストボックス(テキスト_ページ番号)とコマンドボタン(コマンド_移動)も置いたのですが、
コマンドボタンをクリックしたら、
テキストボックスに入ってる値のページ番号に移動するプログラムを組みたいのですが
コードが分かりません。
例えば、テキストボックスに「2」と入力して、コマンドボタンを押したら、
ページ2が選択され前面に表示されるようにしたいです。
Private Sub コマンド_移動_Click()
Me!タブ0.Pages(Me.テキスト_ページ番号.Value).SetFocus
End Sub
としてみたのですが、エラーになってしまいます。
ご回答よろしくお願いします。

No.5ベストアンサー
- 回答日時:
> エラーになってしまいます。
タブ コントロールのPagesプロパティの引数には、
・各ページのNameプロパティ(文字列型)
・各ページのPageIndexプロパティ(数値型)
のどちらも指定可能な仕様になっていますが、どうやらコントロールの値を
参照させる形にした場合は、そこに入っているのが数値であっても文字列
扱いされ、ご質問のようなエラーとなってしまっているようです。
ですので、数値(PageIndex)で指定を行うのであれば、それが数値である
ことを明示した形で渡してやる(例えば数値型を指定した変数に格納する、
など)必要があります。
また、別の注意点として、PageIndexは「最小値=0/最大値=ページ数-1」
となるため、3ページ目を選択したい場合は「3-1=2」を指定する必要が
あります。
以上を踏まえて、ご質問の式を改修すると、以下のようになります:
Me!タブ0.Pages(Me!テキスト_ページ番号.Value - 1).SetFocus
上記の式では、テキストボックスのValueプロパティに対して、「-1」の減算を
することで、Accessに数値であることを暗黙的に認識させています。
(文字列に対しては、「-」を使用しての減算操作はできないので)
なお、ページの選択は、SetFocusメソッドを使用する他に、タブコントロール
のValueプロパティを指定しても行えます:
Me!タブ0.Value = Me!テキスト_ページ番号.Value - 1
なお、こちらの場合は、テキストボックスに「0~ページ数-1」の範囲の整数を
指定していれば、特に数値であることを明示しなくても、エラーにはなりません。
(タブコントロールのValueプロパティは、数値のみを受け付ける仕様のため)
・・・すみません、回答を作成しているうちに、nicotinismさんの回答と前半が
かぶりました(汗)
後半の「タブのValueプロパティの情報提供」ということで、ご容赦のほど(汗)
4さんもおっしゃる通り、
・各ページのNameプロパティ(文字列型)
・各ページのPageIndexプロパティ(数値型)
のふたつがあるようですね。
SetFocusメソッドを使わなくてもアクティブにできるなんて知りませんでした。ありがとうございました。
No.6
- 回答日時:
>Me!タブ0.Pages(Me!テキスト_ページ番号.Value - 1).SetFocus
>上記の式では、テキストボックスのValueプロパティに対して、「-1」の減算を
>することで、Accessに数値であることを暗黙的に認識させています。
これは『テキスト_ページ番号』がテキスト型のままで行うってことですよね?
暗黙の型変換チックなのは個人的には気持ち悪いです。
イミディエイトウィンドウでも確認できますが
a="2"
としといて
?a+2
↓
4
また、
?a-"1e-2"
↓
1.99
とか、a=2 でも同様ですけど、確かに出来ますが
思わぬ時に足元をすくわれそうで怖いです。(^^ゞ
No.4
- 回答日時:
ページ番号の中の値が数値では無くてテキスト型の扱いなので
エラーになるのかなと。
『テキスト_ページ番号』の書式に、# (半角)を入力すれば
質問の、Me!タブ0.Pages(Me.テキスト_ページ番号.Value).SetFocus のままで
エラーにはならないかと。
但し、
インデックス番号はゼロから始まりますので、
1 を入力すれば ページ2が選択されてしまいますから
Me!タブ0.Pages(Me.テキスト_ページ番号.Value - 1).SetFocus
でしょうね。
あるいは 『テキスト_ページ番号』の書式は空欄のままで
Me!タブ0.Pages(val(Me.テキスト_ページ番号.Value) - 1).SetFocus
とかでも。
あとは存在しない番号の誤入力チェックを追加すればいいのでは?
インデックス番号では無くて、名前での処理は最初の回答者さんの通りです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
現在アクティブなタブのページ名を取得したい
Access(アクセス)
-
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
フォームのコントロールのバックカラーの色を変えたい
Visual Basic(VBA)
-
5
どこにもフォーカスを当てたくない
Access(アクセス)
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
サブフォームの切り替え方を教えてください
その他(データベース)
-
8
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
9
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
10
【Access】レポートでテキストボックスやラベル中の文字配置を下にしたい
Access(アクセス)
-
11
access テキストボックスの値取得
Access(アクセス)
-
12
Access サブフォームでの選択行の取得
その他(データベース)
-
13
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
14
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
15
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
16
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
access vbaでフォームを開くと...
-
アクセスで教えてください。 電...
-
docmd.gotorecordを起動するには
-
accessでlaccdbファイルが削除...
-
「テキストデータで送ってくだ...
-
レポートの印刷を一括ではなく...
-
Accessのルックアップ
-
Accessデータベースを開くと同...
-
Access VBA を利用して、フォル...
-
Access DLookup vbaで条件を2件...
-
Accessのテキストボックスの入...
-
ACCESS 長い数字のクエリをする...
-
Access フォーム上のテキストボ...
-
Arduinoで温湿度と時刻を1分ご...
-
Accessのレポートについて
-
Accessフォームの配色テーマを...
-
Accessのクエリの印刷設定
-
Accessデータベースに含まれる...
-
アクセスで、実行時エラー3075 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
なんか Amazon の商品をクリッ...
-
【Chrome】タスクマネージャー...
-
Edgeで新しいタブページがカス...
-
Wordの図形の書式タブが表示さ...
-
Access VBAでタブコントロール...
-
現在アクティブなタブのページ...
-
ファイアーフォックス ミュート...
-
windowsでgooglechromeを開いた...
-
【Google Chrome】「新しいタブ...
-
ブラウザアプリで、ブックマー...
-
いつの間にか「新しいタブ」、...
-
Windows Media Player で「取り...
-
【至急】パワーポイントで表の...
-
ChromeでAdblockを使用すると、...
-
Microsoft Edge のウインドウの...
-
chromeで新しいタブをアクティブに
-
Google chromeのダブルクリック...
-
Google Chromeのブラウザ(PC)...
-
firefoxでリンクを新しいタブで...
-
ブラウザアプリで、タブのグル...
おすすめ情報