Page 295 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼複数のシートを選択する場合の記述がわか... す〜 02/11/5(火) 9:39 ┗Re:複数のシートを選択する場合の記述がわか... ichinose 02/11/5(火) 9:43 ┗Re:複数のシートを選択する場合の記述がわか... す〜 02/11/5(火) 9:51 ┗Re:複数のシートを選択する場合の記述がわ... つん 02/11/5(火) 10:56 ┗Re:複数のシートを選択する場合の記述がわ... す〜 02/11/5(火) 11:25 ┗配列の宣言のところがNG つん 02/11/5(火) 11:38 ┗Re:配列の宣言のところがNG す〜 02/11/5(火) 11:49 ┗Re:配列の宣言のところがNG つん 02/11/5(火) 13:27 ┣Re:配列の宣言のところがNG お笑い芸人 02/11/5(火) 14:06 ┗Re:配列の宣言のところがNG す〜 02/11/5(火) 14:08 ┗Re:配列の宣言のところがNG お笑い芸人 02/11/5(火) 14:51 ┗Re:配列の宣言のところがNG す〜 02/11/5(火) 15:05 ┗Re:配列の宣言のところがNG ichinose 02/11/5(火) 16:51 ┗Re:配列の宣言のところがNG Jaka 02/11/5(火) 17:04 ┗こちらでもおおぼけ・・・ つん 02/11/5(火) 17:15 ─────────────────────────────────────── ■題名 : 複数のシートを選択する場合の記述がわか... ■名前 : す〜 <kaz2000@izu.co.jp> ■日付 : 02/11/5(火) 9:39 -------------------------------------------------------------------------
複数のシートを選択する場合の記述がわかりません。 Sheets(Array("a to b")).Selectではだめなんですね。 どのような記述になるでしょうか? |
▼す〜 さん: おはようございます。 >複数のシートを選択する場合の記述がわかりません。 >Sheets(Array("a to b")).Selectではだめなんですね。 >どのような記述になるでしょうか? マクロの記録のコピーです。 '=================================================================== Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2002/11/5 ' Sheets(Array("Sheet1", "Sheet2")).Select End Sub |
早速の回答有難う御座います^^ 沢山シートがある場合は、どのようにすればいいでしょうか? 例、SHEET1から30までの場合 |
す〜 さんおはようございます ichinoseさん、横から失礼します。 >早速の回答有難う御座います^^ >沢山シートがある場合は、どのようにすればいいでしょうか? >例、SHEET1から30までの場合 こんな感じ? Sub test() Dim strSheet(1 To 30) As String Dim i As Long For i = 1 To 30 strSheet(i) = "Sheet" & i Next i ThisWorkbook.Worksheets(strSheet).Select End Sub どーでしょー? |
皆さん回答が早くてたすかります^^ つんさんの記述でもエラーが出てしまったのですが、下記の記述でどこがおかしいのでしょうか? Private Sub CommandButton3_Click() a = TextBox4.Value b = TextBox5.Value Dim strSheet(a To b) As String Dim i As Long For i = a To b strSheet(i) = "Sheet" & i Next i ThisWorkbook.Worksheets(strSheet).Select End Sub |
>つんさんの記述でもエラーが出てしまったのですが、下記の記述でどこがおかしいのでしょうか? >Private Sub CommandButton3_Click() > a = TextBox4.Value > b = TextBox5.Value ↓ここがNGです。変数の宣言時に他の変数はつかえまへん > Dim strSheet(a To b) As String > Dim i As Long ちゅーことで、こんな感じ Sub test() ’宣言時には配列の大きさは保留にしておいて Dim strSheet() As String Dim i As Long Dim k As Long Dim a As Long Dim b As Long a = 2 b = 4 k = 0 For i = a To 4 ’ここで、改めて宣言しなしてます。「Preserve」とかヘルプを見てね ReDim Preserve strSheet(k) strSheet(k) = "Sheet" & i k = k + 1 Next i ThisWorkbook.Worksheets(strSheet).Select Erase strSheet End Sub |
このようにしてみましたが、ThisWorkbookのところがどうしてもエラーになってしまいます。。 Private Sub CommandButton3_Click() Dim strSheet() As String Dim i As Long Dim k As Long Dim a As Long Dim b As Long a = TextBox4.Value b = TextBox5.Value k = 0 For i = a To 4 'ここで、改めて宣言しなしてます。「Preserve」とかヘルプを見てね ReDim Preserve strSheet(k) strSheet(k) = "Sheet" & i k = k + 1 Next i ThisWorkbook.Worksheets(strSheet).Select Erase strSheet End Sub |
どもども >このようにしてみましたが、ThisWorkbookのところがどうしてもエラーになってしまいます。。 えっと、私は作業するブック(シートを選択するブック)にコードを書いたので、ThisWorkbookにしました。 そうではなく、例えば、現在アクティブになってるブックに対してなら、ActiveBookと指定してやらなくてはいけませんけど・・・ す〜さんは、どのようにされてるのですか? |
みなさま こんにちは。 お笑い芸人です。 少し確認しておきたいのですが。 a = TextBox4.Value b = TextBox5.Value このa、bは、どう言った意味になるのでしょうか? シート名、「Sheet1」の数字のことでしょうか? それとも左からn番目のシートと言う事でしょうか? もし「シート名、「Sheet1」の数字のことでしょうか?」の事なら、 >For i = a To 4 "Sheet" & i のシートが存在しないとエラーになります。 シート名で選択するのか、シートの順番で選択するのか記載しておいた方が良かった見たいですね。 |
WorkBookをアクティブにしてやりましたがうまくいきません。 Private Sub CommandButton3_Click() Dim strSheet() As String Dim i As Long Dim k As Long Dim a As Long Dim b As Long a = TextBox4.Value b = TextBox5.Value k = 0 For i = a To b ReDim Preserve strSheet(k) strSheet(k) = "Sheet" & i k = k + 1 Next i ActiveWorkbook.Worksheets(strSheet).Select Erase strSheet End Sub |
質問とかけ離れているかもしれませんが..。 前に作った物をちょっと変えた状態ですので、不具合があるかもしれません。 フォームモジュールに張りつけてください。 フォームサイズの調整、ボタン等は、必要ありません。 シート枚数を増やしたり減らしたりして試してください。 確か全シート枚数50枚以上には、対応させてなかったと思います。 Public WithEvents CmBottan1 As MSForms.CommandButton Public WithEvents CmBottan2 As MSForms.CommandButton Dim i As Long, j As Long, n As Long, WShC As Long, CheckCnt As Long Dim ボタン位置高 As Single, 実行ボタン位置横 As Long, 繰返し As Long Const 行間隔 = 16, ボタン基準値 = 50 '52.25 Const チェック標準数 = 5 Private Sub CmBottan1_Click() Unload Me End End Sub Private Sub CmBottan2_Click() Dim strSheet() As String, SFlg As Boolean SFlg = False Application.DisplayAlerts = False For i = 1 To 繰返し If Me.Controls("MCheckBox" & i) = True Then k = k + 1 ReDim Preserve strSheet(1 To k) strSheet(k) = Me.Controls("MCheckBox" & i).Caption SFlg = True End If Next Unload Me Application.DisplayAlerts = True If SFlg = True Then Worksheets(strSheet).Select End If End End Sub Private Sub UserForm_Initialize() 'Jは、CheckBoxの区切り個数 n = 0: WShC = Worksheets.Count Me.Width = 240 Me.Caption = "シート削除" Select Case WShC Case Is <= 10 j = 5 Me.Height = 140.25 '標準状態 ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 135 繰返し = WShC Case Is <= 16 j = Application.RoundUp(16 / 2, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 135 繰返し = WShC Case Is <= 20 j = Application.RoundUp(20 / 2, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 135 繰返し = WShC Case Is <= 30 j = Application.RoundUp(30 / 3, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 340 - 105 '340 - 150 繰返し = WShC Me.Width = 340 Case Is <= 35 j = Application.RoundUp(35 / 3, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 340 - 105 繰返し = WShC Me.Width = 340 Case Is <= 45 j = Application.RoundUp(45 / 3, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 340 - 105 繰返し = WShC Me.Width = 340 Case Else MsgBox "シート枚数が多すぎます。" & vbCrLf & _ "現在のシート枚数には、対応しておりません。" & vbCrLf & _ "最高45枚、それ以上は表示されません。" j = Application.RoundUp(45 / 3, 0) Me.Height = 140.25 + 行間隔 * (j - チェック標準数) ボタン位置高 = Me.Height - ボタン基準値 実行ボタン位置横 = 340 - 105 Me.Width = 340 繰返し = 45 'Exit Sub End Select For i = 1 To 繰返し If n = j Then n = 0 End If n = n + 1 Set CheckBox追加 = Me.Controls.Add("Forms.CheckBox.1", "MCheckBox" & i) With Me.Controls("MCheckBox" & i) If i <= j Then .Left = 15 ElseIf i <= j * 2 Then .Left = 120 Else .Left = 225 End If If n = 1 Then .Top = 0 Else .Top = n * 行間隔 - 行間隔 End If .Height = 行間隔 .Caption = Worksheets(i).Name End With Next Set CmBottan1 = Me.Controls.Add("Forms.CommandButton.1", "終了ボタン") With Me.Controls("終了ボタン") .Caption = "終 了" .Width = 75 .Top = ボタン位置高 .Left = 25 .SetFocus End With Set CmBottan2 = Me.Controls.Add("Forms.CommandButton.1", "選択ボタン") With Me.Controls("選択ボタン") .Caption = "シート選択" .Width = 75 .Top = ボタン位置高 .Left = 実行ボタン位置横 '135 End With End Sub |
みなさま説明不足ですみませんでした。 シート名を1,2,3,4としてましたので、「strSheet(k) = i」としましたら指定することが出来ました^^。 ご協力してくださった皆様に感謝です。 ほんとに有難う御座いました。 |
▼す〜 さん: つんさん、お笑い芸人さん、こんにちは。 >みなさま説明不足ですみませんでした。 >シート名を1,2,3,4としてましたので、「strSheet(k) = i」としましたら指定することが出来ました^^。 >ご協力してくださった皆様に感謝です。 >ほんとに有難う御座いました。 つんさん、お笑い芸人さん、フォローありがとうございました。 特にHNまで変えて投稿していただいたお笑い芸人さんに感謝です。 2時間も経っているのに誰も突っ込まないので、それでは失礼かと思い、 内容とは関係ないですが、投稿させていただきました。 |
▼ichinose さん: >つんさん、お笑い芸人さん、フォローありがとうございました。 >特にHNまで変えて投稿していただいたお笑い芸人さんに感謝です。 >2時間も経っているのに誰も突っ込まないので、それでは失礼かと思い、 >内容とは関係ないですが、投稿させていただきました。 ichinoseさん こんにちは。 こちら側とうまくつながらなかったんで、めずらしくあっちを見て気が付きました。 こことつながっていたら、気づかなかったでしょうね。 あっちは、やたらとスレッドがでかいんで見ずらかった。 しかし、うわさの張本人が2時間もバックレているなんて.........。 あ〜、はずかし。 |
Jaka さん、ichinose さん、こんちは〜 「お笑い芸人さん」の正体・・・わかってへんかった( ̄△ ̄;) ichinoseさんのレスで、「そーいや・・・石鹸箱で・・・」と見に行って、納得しました(T_T) ああ・・・せっかくの突っ込みどころだったのに・・・(笑) |