
アクセス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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
このQ&Aを見た人はこんなQ&Aも見ています
-
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
現在アクティブなタブのページ名を取得したい
Access(アクセス)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
5
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
access テキストボックスの値取得
Access(アクセス)
-
8
Accessのフォームでタブの色
Access(アクセス)
-
9
アクセスVBAのMe!と[ ]
Access(アクセス)
-
10
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
11
パラメータが少なすぎます。1を指定して下さい。""
Excel(エクセル)
-
12
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
13
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
14
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
15
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
16
アクセスでサブフォームのレコードを取得したい。
Access(アクセス)
-
17
access の 最終レコードの判定はどう記述しますか
Access(アクセス)
-
18
【Access】レポートでテキストボックスやラベル中の文字配置を下にしたい
Access(アクセス)
-
19
AccessVBAの値によってチェックボックスの背景色を変えるには?
その他(Microsoft Office)
-
20
Access2010 「演算子がありません」エラー
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Chrome】タスクマネージャー...
-
Edgeで新しいタブページがカス...
-
Wordの図形の書式タブが表示さ...
-
Access VBAでタブコントロール...
-
新しいタブについて
-
Eclipseでソースを縦に2つ表示...
-
【Google Chrome】「新しいタブ...
-
ワード表中での数値の微妙なず...
-
現在アクティブなタブのページ...
-
インターネット・エクスプロー...
-
Google chromeでクリックができ...
-
【Chrome拡張機能】サイト自動...
-
Windows Media Player で「取り...
-
windowsでgooglechromeを開いた...
-
ファイアーフォックス ミュート...
-
chromeをFirefoxのようなタブ表...
-
GoogleChromeで日本語にしたい...
-
Windows10のタスクバーのプレビ...
-
Googleからページを開くと新し...
-
opera 初歩の質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Chrome】タスクマネージャー...
-
Edgeで新しいタブページがカス...
-
Access VBAでタブコントロール...
-
Wordの図形の書式タブが表示さ...
-
ファイアーフォックス ミュート...
-
windowsでgooglechromeを開いた...
-
【Google Chrome】「新しいタブ...
-
Chromeのタブ上でホイールクリ...
-
新しいタブについて
-
【至急】パワーポイントで表の...
-
現在アクティブなタブのページ...
-
Windows Media Player で「取り...
-
ChromeでAdblockを使用すると、...
-
Google chromeでクリックができ...
-
Google Chromeのブラウザ(PC)...
-
いつの間にか「新しいタブ」、...
-
ブラウザアプリで、ブックマー...
-
勝手にchromeウェブストアが開...
-
chromeのタブに文字が表示されない
-
任意のタブのページをアクティ...
おすすめ情報