Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4932 / 13646 ツリー ←次へ | 前へ→

【53491】知恵を貸してくれませんか? 貫井企画 08/1/16(水) 21:54 質問[未読]
【53492】Re:知恵を貸してくれませんか? じゅんじゅん 08/1/16(水) 22:08 発言[未読]
【53494】Re:知恵を貸してくれませんか? 貫井企画 08/1/17(木) 1:14 お礼[未読]
【53493】Re:知恵を貸してくれませんか? Sasurai 08/1/16(水) 22:37 回答[未読]
【53495】Re:知恵を貸してくれませんか? 貫井企画 08/1/17(木) 1:16 お礼[未読]
【53503】Re:知恵を貸してくれませんか? Sasurai 08/1/17(木) 22:37 回答[未読]
【53505】Re:知恵を貸してくれませんか? 貫井企画 08/1/17(木) 23:48 お礼[未読]
【53496】Re:知恵を貸してくれませんか? Jaka 08/1/17(木) 9:23 発言[未読]
【53506】Re:知恵を貸してくれませんか? 貫井企画 08/1/17(木) 23:49 お礼[未読]

【53491】知恵を貸してくれませんか?
質問  貫井企画  - 08/1/16(水) 21:54 -

引用なし
パスワード
   たびたびすみません。図々しいのですが、
_________________________________________________________________________

Sub シート選択()

Dim InputStr As String
Dim Msg1 As String
Dim Title1 As String
Dim Temp As String
Dim Ron As String
Dim i As Byte

MsgBox "シート選択のマクロを始めます。"

InM:
Msg1 = "選択したいシートの名前を入力して下さい。"
Title1 = "シートの選択"
InputStr = InputBox(Msg1, Title1)

For i = 1 To Worksheets.Count
Temp = Worksheets(i).Name

Select Case i
Case Worksheets.Count
If InputStr = Temp Then
Worksheets(InputStr).Activate
MsgBox Temp & "ワークシートが選択されました。", vbOKOnly + vbInformation, "シートの確認"

Else
MsgBox InputStr & "に該当するワークシートはありません。", vbOKOnly + vbExclamation, "シートの確認"


GoTo OutN

End If

Case Else
If InputStr = Temp Then
Worksheets(InputStr).Activate
MsgBox Temp & "ワークシートが選択されました。", vbOKOnly + vbInformation, "シートの確認"


GoTo OutN
End If
End Select
Next

OutN:

Ron = MsgBox("シート選択を続けますか?", vbYesNo + vbQuestion, "続行確認")

If Ron = vbYes Then GoTo InM Else MsgBox "シート選択マクロを終わります。"

End Sub
_________________________________________________________________________

問題
・シート名を入力せずにOKボタンを押したとき、エラーメッセージを表示させて入力状態に戻すには?

・入力のとき、「キャンセル」ボタンを押したら、マクロを終了するようにしてみるには?

どう工夫・変更したらこのようにすることができるでしょうか?
知恵をお借りしたいです。どうぞよろしくお願いします。
(最初の問題はすでにクリアできている!?)

【53492】Re:知恵を貸してくれませんか?
発言  じゅんじゅん  - 08/1/16(水) 22:08 -

引用なし
パスワード
   ▼貫井企画 さん:
>たびたびすみません。図々しいのですが、
>問題
>・シート名を入力せずにOKボタンを押したとき、エラーメッセージを表示させて入力状態に戻すには?
>
>・入力のとき、「キャンセル」ボタンを押したら、マクロを終了するようにしてみるには?
>
>どう工夫・変更したらこのようにすることができるでしょうか?
>知恵をお借りしたいです。どうぞよろしくお願いします。
>(最初の問題はすでにクリアできている!?)

Inputメソッドは如何?

Sub test()
 Dim InputStr As String
 Dim Msg1 As String
 Dim Title1 As String

 Msg1 = "選択したいシートの名前を入力して下さい。"
 Title1 = "シートの選択"
 InputStr = Application.InputBox(Msg1, Title1, Type:=2)

 If InputStr = "False" Then
   MsgBox "キャンセルされました"
 ElseIf InputStr = "" Then
   MsgBox "未入力です"
 End If
End Sub

参考URL
http://officetanaka.net/excel/vba/tips/tips37.htm

【53493】Re:知恵を貸してくれませんか?
回答  Sasurai  - 08/1/16(水) 22:37 -

引用なし
パスワード
   >問題
>・シート名を入力せずにOKボタンを押したとき、エラーメッセージを表示させ>て入力状態に戻すには?

>・入力のとき、「キャンセル」ボタンを押したら、マクロを終了するようにして>みるには?

こんな感じでできると思いますが。。
 Dim shName
 msg1 = "選択したいシートの名前を入力して下さい。"
 title1 = "シートの選択"
 Do
  shName = Application.InputBox(msg1, title1, Type:=2)
  If VarType(shName) = vbBoolean Then
   Exit Sub
  ElseIf Len(Trim$(shName)) = 0 Then
   MsgBox msg1, vbExclamation
  Else
   Exit Do
  End If
 Loop

単にシートを選択させたいなら、
CommandBars("Workbook Tabs").ShowPopup
で、どうでしょう?

【53494】Re:知恵を貸してくれませんか?
お礼  貫井企画  - 08/1/17(木) 1:14 -

引用なし
パスワード
   じゅんじゅんさん
参考URLありがとうございます!!InputBoxについてとても勉強になりました。しかしまだ自分で使いこなせるかと言われたら微妙です。
じゅんじゅんさんが教えてくれたマクロを実行してみました。
これを私の書いたマクロでどこか一部を変更して組み合わせる・・・みたいなことは可能でしょうか?
よろしくお願いします。

【53495】Re:知恵を貸してくれませんか?
お礼  貫井企画  - 08/1/17(木) 1:16 -

引用なし
パスワード
   sasuraiさん
返答ありがとうございます!実行してみたところ上手くいきました♪
このマクロを私の最初に書いたマクロと組み合わせるということは可能でしょうか?たびたびすみませんが、よろしくお願いします。

【53496】Re:知恵を貸してくれませんか?
発言  Jaka  - 08/1/17(木) 9:23 -

引用なし
パスワード
   シートの選択ならこんな方法も。
ただ、非表示シートには対応させてなかったと思います。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=45328;id=excel

【53503】Re:知恵を貸してくれませんか?
回答  Sasurai  - 08/1/17(木) 22:37 -

引用なし
パスワード
   ▼貫井企画 さん:
>sasuraiさん
>返答ありがとうございます!実行してみたところ上手くいきました♪
>このマクロを私の最初に書いたマクロと組み合わせるということは可能でしょうか?たびたびすみませんが、よろしくお願いします。

結論から言えば可能です。
あと、貫井企画さんのコードはインデントがなくて見にくい(可読性が悪くなる)ので
インデントを付けたほうがよいです。

どこに入れるか、いろいろ試してみて分からなければまた質問してください。

【53505】Re:知恵を貸してくれませんか?
お礼  貫井企画  - 08/1/17(木) 23:48 -

引用なし
パスワード
   Sasurai さん

インデントですね。いろいろ調べてようやくわかりました!!
親切なご指導ありがとうございます。いろいろ試行錯誤してみます!
またわからないことがあったら是非お願いします。こんな初心者に親切にしてくださって本当に感謝です。ありがとうございました!!

【53506】Re:知恵を貸してくれませんか?
お礼  貫井企画  - 08/1/17(木) 23:49 -

引用なし
パスワード
   Jaka さん

参考URLありがとうございます!!
見て勉強してみます。どうもご親切にありがとうございました♪

4932 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free