解決済み

VBA 型が一致しません

  • 困ってます
  • 質問No.9538834
  • 閲覧数633
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 33% (1/3)

初めまして
マクロを習い始めた初心者なのですが、ユーザーフォームを用いて印刷設定を行おうとしています。
(最後のSelectは最終的にPrintoutにします)
今まではループ処理で一枚ずつ印刷するような設定にしていましたが、他の人もプリンターを使用しているのでスプールをまとめようと考えました。
ユーザーフォームに使用しているのはトグルボタンとコマンドボタンのみです。
必要なシートの名前を付けたトグルボタンで印刷するシートを選べるようにしています。
下記のように記述しましたが、途中型が一致しませんと出て困っています。
ご教授願います。


Private Sub CommandButton1_Click()
Dim TgLB_val(4) As Boolean

Dim TgLB_cap(4) As Variant
TgLB_cap(1) = TB1.Caption: TgLB_cap(2) = TB2.Caption
TgLB_cap(3) = TB3.Caption: TgLB_cap(4) = TB4.Caption
Dim sEnt_sh As Variant
Dim i As Long
For i = 1 To 4
If TgLB_val(i) Then
sEnt_sh(UBound(sEnt_sh)) = TgLB_cap(i) →ここでいつも型が一致しませんとでます。TgLB_cap の方をstring型からvariant型に変更しても出ています。
ReDim Preserve sEnt_sh(UBound(sEnt_sh) + 1) 
End If

Next i
Stop
Sheets(sEnt_sh).Select
End Sub

質問者が選んだベストアンサー

  • 回答No.2

ベストアンサー率 62% (445/708)

Visual Basic カテゴリマスター
ユーザーフォーム上にはオブジェクト名ToggleButton1~ToggleButton4
トグルボタンが有りそれぞれCaptionにはシート名が記されています。
の条件でお試しください。
Private Sub CommandButton1_Click()
  Dim sEnt_sh()
  Dim i As Long, j As Long
  For i = 1 To 4
    If Me.Controls("ToggleButton" & i).Value Then
      j = j + 1
      ReDim Preserve sEnt_sh(1 To j)
      sEnt_sh(j) = Me.Controls("ToggleButton" & i).Caption
    End If
  Next
  Sheets(sEnt_sh).Select
End Sub
お礼コメント
ichidahechima

お礼率 33% (1/3)

回答ありがとうございます。
おかげさまでうまく作動しました!
本当にありがとうございました。
投稿日時 - 2018-09-25 12:09:33

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 45% (131/287)

sEnt_shこの変数は配列ではないのに
UBound関数を利用しているからでは

Dim sEnt_sh() As Variant
補足コメント
ichidahechima

お礼率 33% (1/3)

回答ありがとうございます。
宣言のところに()を追加しましたが、やはり型が一致しませんと出てしまいました。
投稿日時 - 2018-09-25 12:06:47
  • 回答No.1

ベストアンサー率 44% (4210/9502)

他カテゴリのカテゴリマスター
Dim sEnt_sh As Variant

ReDim sEnt_sh(1) As String
または
ReDim sEnt_sh(1) As Variant
としたらどうでしょうか?
補足コメント
ichidahechima

お礼率 33% (1/3)

回答ありがとうございます。
入れてみあのですが、今度は
ReDim Preserve sEnt_sh(UBound(sEnt_sh) + 1)
の部分で配列は既に宣言されていますとエラーが出てしまいました。
投稿日時 - 2018-09-25 12:06:50
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ