過去ログ

                                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ではだめなんですね。
どのような記述になるでしょうか?
 ───────────────────────────────────────  ■題名 : Re:複数のシートを選択する場合の記述がわか...  ■名前 : ichinose  ■日付 : 02/11/5(火) 9:43  -------------------------------------------------------------------------
   ▼す〜 さん:
おはようございます。
>複数のシートを選択する場合の記述がわかりません。
>Sheets(Array("a to b")).Selectではだめなんですね。
>どのような記述になるでしょうか?
マクロの記録のコピーです。
'===================================================================
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2002/11/5 

'
  Sheets(Array("Sheet1", "Sheet2")).Select
End Sub
 ───────────────────────────────────────  ■題名 : Re:複数のシートを選択する場合の記述がわか...  ■名前 : す〜 <kaz2000@izu.co.jp>  ■日付 : 02/11/5(火) 9:51  -------------------------------------------------------------------------
   早速の回答有難う御座います^^
沢山シートがある場合は、どのようにすればいいでしょうか?

例、SHEET1から30までの場合
 ───────────────────────────────────────  ■題名 : Re:複数のシートを選択する場合の記述がわ...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/5(火) 10:56  -------------------------------------------------------------------------
   す〜 さんおはようございます
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

どーでしょー?
 ───────────────────────────────────────  ■題名 : Re:複数のシートを選択する場合の記述がわ...  ■名前 : す〜 <kaz2000@izu.co.jp>  ■日付 : 02/11/5(火) 11:25  -------------------------------------------------------------------------
   皆さん回答が早くてたすかります^^
つんさんの記述でもエラーが出てしまったのですが、下記の記述でどこがおかしいのでしょうか?
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
 ───────────────────────────────────────  ■題名 : 配列の宣言のところがNG  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/5(火) 11:38  -------------------------------------------------------------------------
   >つんさんの記述でもエラーが出てしまったのですが、下記の記述でどこがおかしいのでしょうか?
>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
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : す〜 <kaz2000@izu.co.jp>  ■日付 : 02/11/5(火) 11:49  -------------------------------------------------------------------------
   このようにしてみましたが、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
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/5(火) 13:27  -------------------------------------------------------------------------
   どもども
>このようにしてみましたが、ThisWorkbookのところがどうしてもエラーになってしまいます。。

えっと、私は作業するブック(シートを選択するブック)にコードを書いたので、ThisWorkbookにしました。

そうではなく、例えば、現在アクティブになってるブックに対してなら、ActiveBookと指定してやらなくてはいけませんけど・・・

す〜さんは、どのようにされてるのですか?
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : お笑い芸人  ■日付 : 02/11/5(火) 14:06  -------------------------------------------------------------------------
   みなさま こんにちは。
お笑い芸人です。

少し確認しておきたいのですが。
a = TextBox4.Value
b = TextBox5.Value

このa、bは、どう言った意味になるのでしょうか?
シート名、「Sheet1」の数字のことでしょうか?
それとも左からn番目のシートと言う事でしょうか?

もし「シート名、「Sheet1」の数字のことでしょうか?」の事なら、
>For i = a To 4
"Sheet" & i のシートが存在しないとエラーになります。

シート名で選択するのか、シートの順番で選択するのか記載しておいた方が良かった見たいですね。
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : す〜 <kaz2000@izu.co.jp>  ■日付 : 02/11/5(火) 14:08  -------------------------------------------------------------------------
   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
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : お笑い芸人  ■日付 : 02/11/5(火) 14:51  -------------------------------------------------------------------------
   質問とかけ離れているかもしれませんが..。
前に作った物をちょっと変えた状態ですので、不具合があるかもしれません。

フォームモジュールに張りつけてください。
フォームサイズの調整、ボタン等は、必要ありません。
シート枚数を増やしたり減らしたりして試してください。
確か全シート枚数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
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : す〜 <kaz2000@izu.co.jp>  ■日付 : 02/11/5(火) 15:05  -------------------------------------------------------------------------
   みなさま説明不足ですみませんでした。
シート名を1,2,3,4としてましたので、「strSheet(k) = i」としましたら指定することが出来ました^^。
ご協力してくださった皆様に感謝です。
ほんとに有難う御座いました。
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : ichinose  ■日付 : 02/11/5(火) 16:51  -------------------------------------------------------------------------
   ▼す〜 さん:
つんさん、お笑い芸人さん、こんにちは。

>みなさま説明不足ですみませんでした。
>シート名を1,2,3,4としてましたので、「strSheet(k) = i」としましたら指定することが出来ました^^。
>ご協力してくださった皆様に感謝です。
>ほんとに有難う御座いました。

つんさん、お笑い芸人さん、フォローありがとうございました。
特にHNまで変えて投稿していただいたお笑い芸人さんに感謝です。
2時間も経っているのに誰も突っ込まないので、それでは失礼かと思い、
内容とは関係ないですが、投稿させていただきました。
 ───────────────────────────────────────  ■題名 : Re:配列の宣言のところがNG  ■名前 : Jaka  ■日付 : 02/11/5(火) 17:04  -------------------------------------------------------------------------
   ▼ichinose さん:
>つんさん、お笑い芸人さん、フォローありがとうございました。
>特にHNまで変えて投稿していただいたお笑い芸人さんに感謝です。
>2時間も経っているのに誰も突っ込まないので、それでは失礼かと思い、
>内容とは関係ないですが、投稿させていただきました。

ichinoseさん こんにちは。
こちら側とうまくつながらなかったんで、めずらしくあっちを見て気が付きました。
こことつながっていたら、気づかなかったでしょうね。
あっちは、やたらとスレッドがでかいんで見ずらかった。

しかし、うわさの張本人が2時間もバックレているなんて.........。
あ〜、はずかし。
 ───────────────────────────────────────  ■題名 : こちらでもおおぼけ・・・  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/11/5(火) 17:15  -------------------------------------------------------------------------
   Jaka さん、ichinose さん、こんちは〜

「お笑い芸人さん」の正体・・・わかってへんかった( ̄△ ̄;)
ichinoseさんのレスで、「そーいや・・・石鹸箱で・・・」と見に行って、納得しました(T_T)
ああ・・・せっかくの突っ込みどころだったのに・・・(笑)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 295