フォーム上に配置したマルチページ(ページタブは3つ有ります)のうち、任意のページをアクティブもしくは選択する方法が分かりません。
例えば、1つ目のページをアクティブにするには、どの様なコードを書けば良いのでしょうか?いろいろ本などで調べましたが、見つかりませんでした。
エクセルのバージョンは97です。よろしくお願いします。

A 回答 (4件)

どもども田吾作7です。



MultiPage1.Value=ページのインデックス値

これでページは切り替わります。

でわでわ
    • good
    • 0

結果からいうと無理です。



別々のCheckBoxは個々単体ですので、VBの基本として、
Object.プロパティやObject.メソッド など、一つのコントロールに対しての命令や属性の変更をかけることしかできません。


もし他の方法を望むのであれば、次のロジックはどうでしょうか?
(これまた参考です。)
手順1.EXCEL起動時にUserFormをロードしておく
手順2.シート1のCells(1,1)からCells(100,1)の値をUserFormのチェックボックスに反映させる。
手順3.Cells(1,1)からCells(100,1)の値の変更イベント時に、対応するチェックボックスだけ、値を変更する(サンプルモジュールがありますのでそちらを見てください。
手順4.必要なときにUserFormをShowする。
手順5.必要ないときはUserFormをアンロードしないで、Visible=Falseにする。

あとは手順3~5の処理をEXCELが終了するまで繰り返します。


以下のコードをシート1のモジュールに記述してください。
(このサンプルは1~5行目までの変更を認識し、対応するチェックボックスの値を変更します。)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wkRange As Range

Set wkRange = Target(1, 1)

'1列目(A)以外は未処理
If Not (wkRange.Column = 1) Then GoTo PGMEND
'5行目以上は未処理
If (wkRange.Row > 5) Then GoTo PGMEND

UserForm1("CheckBox" & wkRange.Row).Value = (wkRange.Value = 1)

PGMEND:
End Sub


毎回たくさんチェックするのがいやなのであれば、こういった方法もありますよ。


でわでわ
    • good
    • 0

どもども 再々度 田吾作7です。




>効率よくチェックしたり、設定するには・・・hogehoge

とありましたが、チェックロジックは全体の処理を知らないと、答えようが・・・

設定は、回答No1のお礼に書いてあったソース部分だけでいうと
For i = 1 to 100
Userform1("CheckBox" & i).Value = (cells(i, 1).value = 1)
Next i
ってな感じでいいと思います。
Value に設定してある(cells(i, 1).value = 1)の部分がTrue/Falseを返すので、その値をそのままセットしてやると、If文を使用しないで済むと思います。
(σ( ̄ー ̄ ボク If文少ないの好きです)



さっきも言ったようにチェックロジックは、全体の処理の流れがわからないと、下手なことを言うことが出来ません。ですので、一応の参考として、チェックロジックのソースを書いておきますが、ご自分の好きなように変更を加えて、今作成中のプログラムに適した形にしてください。

※必要なコントロール
1.コマンドボタン1
2.リストボックス
3.マルチページ
4.マルチページの中にチェックボックスたくさん(各ページにたくさんチェックボックスがあった方が、実験になると思います)


Private Sub CommandButton1_Click()
With UserForm1
Call CheckBoxValue_ListBoxOut(.MultiPage1.Pages(0), .ListBox1)
End With
End Sub

'【機能】リストボックスにマルチページ内の指定ページのチェックボックスの状態を出力
'【パラメータ】
'1.ページオブジェクト
'2.リストボックスオブジェクト
Sub CheckBoxValue_ListBoxOut(inPage As Page, OutListBox As Control)
Dim wkCtrlCnt As Long '指定のページに存在するコントロールの数のカウント

Dim wkCheckBox As Control 'チェックボックスコントロールの一時セットワーク

Dim i As Long 'ループカウンタ

'出力先リストボックスをクリア
OutListBox.Clear

'ページ内のコントロールの数を得る
wkCtrlCnt = inPage.Controls.Count

'コントロールの数だけループする
For i = 1 To wkCtrlCnt

'i番目のコントロールのタイプがチェックボックスだった時
If TypeName(inPage.Controls(i - 1)) = "CheckBox" Then

'ワークに一時セットする(別にセットしないでもかまわないけど、この方が見栄えがよい)
Set wkCheckBox = inPage.Controls(i - 1)
'リストボックスへ出力
OutListBox.AddItem wkCheckBox.Name & " のValueは " & wkCheckBox.Value

End If
Next i

'開放
Set wkCheckBox = Nothing
End Sub

あくまでも、参考です・・・

でわでわ
    • good
    • 1
この回答へのお礼

田吾作7さん、まいどありがとうございます。
For i = 1 to 100
Userform1("CheckBox" & i).Value = (cells(i, 1).value = 1)
Next i
でとりあえず試してみます。

さっきも言ったようにチェックロジックは、全体の処理の流れがわからないと、
下手なことを言うことが出来ません。

プログラムで行いたいことは、任意のWorksheet(例えばWorksheets(1))の
Cell(1,1)からCell(100,1)に入っている値が1(もしくは""以外)ならば、
それに対応するCheckboxをtrueに設定することです。Cell(1,1)がcheckbox1
にCell(2,1)がcheckbox2,,,,Cell(100,1)がcheckbox100に対応しています。
CheckboxはMultipage1上に配置してあります。
初心者の私には、Cellの値を一つ一つチェックして、Checboxの値を設定して
行くことくらいなら、コードをたくさん書けば可能なのですが、もっと効率の
良いやり方が有るはずだと思い質問させていただきました。

お礼日時:2001/07/12 13:10

再び田吾作7です。



締め切ってない所を見ると、見てないのか、あるいは「ページのインデックス値 」がわからなかったのかな?

一応参考までに、、、
1番目のタブを指定
MultiPage1.Value=0
2番目のタブを指定
MultiPage1.Value=1
3番目のタブを指定
MultiPage1.Value=2

ってな感じです。

詳しく言うと、各ページはページというオブジェクトで、マルチページとはそのページオブジェクトをコレクション化した(束ねた)ものです。
MultiPage1.Pages(1) とするとページの中を操作しますが、今回したい作業は「どのページをアクティブにするか」ということなので、「このコレクションに対して、どれをアクティブにするか」という命令になります。よってMultiPage1の中のページオブジェクトを操作するのではなく、MultiPage1自身を操作することになります。

それにしても、Valueでページを変更するってのはチョット違和感がありますよね。Microsoftさんの思惑が時々わからなくなるのは僕だけでしょうか?
( ̄ロ ̄lll) あっ 愚痴ってしまった。。。

でわでわ
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。
No1の回答で十分なところを、さらに詳しく解説していただき
恐縮しております。問題は無事に解決しました。

それにしても、Valueでページを変更するってのはチョット違和感がありますよね。Microsoftさんの思惑が時々わからなくなるのは僕だけでしょうか?

私も以下の様なコードを書いてしまい、エラーが起きました。
Userform1.MultiPage1.Page1.ActivateとかSelect
Userform1.MultiPage1.Pages(1).Activate
まさか、MultiPage本体のValueで設定するとは思いもつきませんでした。

ついでに、もう一つ教えていただきたいのですが、Multipage1上に配置した
Checkbox(例えば100個、Checkbox1-100)のvalueがTrueかFalseかを
効率よくチェックしたり、設定するにはどの様なコードが最適でしょうか?
例えば、
For i = 1 to 100
If cells(i, 1).value = 1 then
Checkbox(i).value=True
Else
Checkbox(i).value=false
End if
Next i
と言った感じです。

お礼日時:2001/07/12 09:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qword 罫線 表 改頁

WORDで表を作ってその表のタイトルで改頁
などしたりしているうち
後でその改頁を削除しようとすると表の中に改頁表示が
埋めこまれて削除不可能になったりします。

きちんと改頁をとるにはどう操作すればよいのでしょうか。
よろしくお願いいたします。

Aベストアンサー

No1の者です。
いろいろ試してみたんですが、おっしゃるような現象は起こりませんでした(^^;)。できましたら、下記を教えてもらえませんか?
○Wordのバージョン
○OSの種類(Windows98とか)
○何行何列の表をいくつぐらい作成したのか。
○もし、「どういうときに起こりやすいか」というのがわかりましたら、より詳しく教えて下さい。

QVBAでマルチページのページ指定方法

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10131455920

このページと全く同じ質問です。

マルチページのページ指定で

Valueではなく、Captionで指定したいのですが
Forループで検索をかけるしかないでしょうか?

一発で指定できる方法があれば教えてください。

Aベストアンサー

ページの指定は Value によりますが
ページの Caption ではなく Name を使えば
ループしなくても ページのインデックスを取得できます。

MultiPage1.Value = MultiPage1.Pages("1ページ目のPage名").Index

とか。

プロパティで Caption と Name を同じに変更しておけば
直観的には Caption で指定したような感じになるでしょう。
ただし、オブジェクト名に使えない文字が含まれる場合は
この手は使えませんが。
その場合でも、デフォルトのページ名から
内容の分かりやすい名前に変更しておくことをおすすめします。


プロパティの設定方法が
ユーザーフォーム と シート で異なっていますが
マルチページ は、そのどちらにありますか?

Qwordで印刷の頁順を変えたい

wordでB5の文書4Pの倍数を作りB4用紙に出力する時
(以後4pの倍数)

通常文書を作成しますと

1頁目
2頁目
3頁目
4頁目
---
5頁目
6頁目
7頁目
8頁目
---
:
:
となりますが

これを下記の順序で印刷する事可能でしょうか
4頁目
1頁目
2頁目
3頁目
---
8頁目
5頁目
6頁目
7頁目
---
:
:
逆頁で印刷というのはあるようですが

1頁づつ移動して行えばできなくはないのですが
修正が入った時などズレを気にしなくてはならず
困っています。

良い方法があったら教えて下さい。
宜しくお願い致します。

Aベストアンサー

ファイル→印刷で
ページを指定して印刷の欄に、印刷したいページを
「4,1,2,3,8,5,6,7」と指定すればその順番で印刷します。(Word2000の場合)

QマルチページTIFFで指定ページを直接表示する方法は?

お世話になります。
現在、MS-AccessでTIFFファイル(名前と内容)を管理しています。
検索すると、目的の情報が○ページ目にあるか分かるようにしていますが、
TIFFファイルを開いて目的のページまで進むのが面倒です。
ファイルを開く時に、開いた時に表示されるページを指定する方法はありませんか?

OS:WinXP Pro
viewer:画像とFAXビューア

方法があるならば、他のviewerでもOKです。
宜しくお願いします。

Aベストアンサー

No.1 です。

コマンドラインから起動できれば、

i_view32.exe <画像ファイル名> /page=5

で出来るようです。

QWORDで中綴じ用の頁番号を付けるには?

WORDで中綴じ用の頁番号を付けることは可能でしょうか?

中綴じの場合、例えば、全部で16頁あったとすると、一枚面の用紙の表側は第1頁と第16頁(の2頁)、裏側は第2頁と第15頁(の2頁)のような頁番号になると思いますが、このような形で頁番号を表示し、かつ、その頁番号に該当する頁内容をプリントするにはどうすればよいでしょうか? 自動的に行う方法があるのでしょうか?

Aベストアンサー

次のような方法があります。

1) 印刷するページの順番を指定して印刷する。
2) プリンタの「冊子印刷」機能を利用する。
3) Wordの小冊子印刷機能を利用する。

「用紙の両面に印刷し、綴じて製本する」
http://pc.nikkeibp.co.jp/pc21/tech/word50/36/index.shtml

「「Word」 による「小冊子」の作成」
http://www1.odn.ne.jp/nsc-ob/cont203.htm

「小冊子を印刷する」
http://office.microsoft.com/ja-jp/word/HP030729491041.aspx

Qエクセル アクティブセルからアクティブセルの行と指定の列を選択するマク

エクセル アクティブセルからアクティブセルの行と指定の列を選択するマクロをつくりたい。

仕事で、エクセルA列からAL列までのフィールドのデータを毎日50件程登録する要件が出て参りました。
受付表として、受付番号・住所・製品名など登録し、このリストを使用して随時受付内容の確認を致します。

現在、マクロによって、業務負荷を軽減しようと考えております。(マクロはVBのコントロールボックス「再生」ボタンでしか使用できないレベルです)

その一つとして、アクティブセルを選択し、コントロールボックスのボタンを押すとアクティブ行の指定列まで移動するマクロを作りたいと思っております。
例)
 <D列を指定列とする>
  A1を選択 →D1
F10を選択→D10

コントロールボックスは自分で作成する事が出来ます。
どなたか、上記の構文をアドバイス頂けませんでしょうか。

宜しくお願いします。  

Aベストアンサー

Range("D" & ActiveCell.Row).Select

これだけで

QWord2010の頁番号の付け方で質問です

Word2010で、5頁の文書を作りました。1~3頁まで頁番号を付け、4頁と5頁には付けないという事は出来るでしょうか?3頁文末にセクション区切りを挿入して試してみましたが、上手くいきませんでした。宜しくお願いします。

Aベストアンサー

まず、「挿入」→「ヘッダーとフッター」→「ページ番号」で、ページ番号を挿入します。
この状態では、4ページと5ページにもページ番号が入っていると思います。

次に、4ページのページ番号が入っているフッターの部分にカーソルを置いて、「ヘッダー/フッターツール」「デザイン」→「ナビゲーション」の中の「前と同じヘッダー/フッター」をクリックします。
これで、4ページと5ページのページ番号が消えるはずです。

Qマルチページの初期表示ページを変える(Excel 2007 VBA)

いつもお世話になります。
マルチページを持っているユーザーフォームを表示したときに、最初に表示するページを状況に応じて切り替えるにはどうしたらいいでしょうか。
たとえば、
 月 火 水 木 金 土 日
という7つのページをもったマルチページがあって、フォームを起動したときの曜日のページが一番手前に表示されるようにしたいです。
よろしくお願いします!

Aベストアンサー

Valueプロパティを使ってください。
月曜日のインデックスが 0 であれば、

Me.MultiPage1.Value = Weekday(Date, vbMonday) - 1

というコードを記述すればいいです。

Q宇多田ヒカルの最近の画像!!

今日、Mステーションに宇多田ヒカルが出演しましたが、仕事で見れませんでした…(泣)
宇多田ファンの自分としては大ショックです…

色々なサイトで、宇多田ヒカル太った!と話題になってますが、最近の宇多田ヒカルの画像が見たいです!

仕事が忙しく、テレビ見れなくて…

今日のMステの出演時の画像や最近の画像があれば、よろしくお願いいたします!!

Aベストアンサー

今公式サイトなどで映像配信してますよ。
期間限定だったと思いますが、ギターで弾き語りをしているとか・・・。
私はまだ見ていないのですが、多分つい最近撮られたものだと思いますので、ごらんになってみては?

参考URL:http://www.toshiba-emi.co.jp/hikki/

Qアクティブセルのひとつ右をアクティブにする方法

アクティブセルのひとつ右をアクティブにしたいのですが、ご存知の方、ご教授ください

Aベストアンサー

activecell.offset(0,1).activate
ではダメなのですか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング