質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

VBAで連続印刷を行いたい。エラー13

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,728

score 11

前提・実現したいこと

マクロ印刷を行いたいのですが、知識がなく困っています。

表示からマクロを行おうとしたがエラーが表示された。
デバッグを行うとmyNoPostal = .Range("G" & i).Value    '〒のセル挿入の部分に黄色が入ります。

発生している問題・エラーメッセージ

エラーメッセージ
実行時エラー'13':
型が一致しません。

該当のソースコード

Sub 印刷()
'Dim~として変数を宣言する
Dim LastRow As Long  '最終行を「長整数型」として宣言
Dim i As Long        '繰り返しの回数カウントの変数を「長整数型」として宣言
Dim myNo As String   '印刷用のC4セルに入力する番号を「長整数型」として宣言
'職員番号が「T10002」などと文字も入っていたら、Dim myNo As String と「文字列型」として宣言する

Dim myNameIdol As String
Dim myNameOffice As String
Dim myNumBook As Long
Dim myNumPrice As Long
Dim myNoPostal As Long
Dim myNameType As String
Dim myNameSaleType As String
Dim myNameAddress As String
Dim myNoTel As String
Dim myNamePerson As String
Dim myPayment As String
Dim myFree As String

'Withは「○○で」ということを表す
With Worksheets("顧客情報")    '「名簿」シートで

'LastRowという変数にA列の最終行数を入れる
'Rows.Countはシートの行数
'End(xlUp)は「下の方のアクティブセルからCtrlと↑キーを押す」操作を記録すると表示されるものと同じです
'.Cells(.Rows.Count, "A").End(xlUp).Rowで、A列の最下行から上方向に向かってデータに突き当たった行

LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
'↑このピリオドは重要で、Withで指定したところ「の」というような意味で
'これをつけないと、アクティブになっているシートのCellということになってしまい
'意図しない動きになったりするので、気をつけてください。

'For~Next で、繰り返しをします
For i = 5 To LastRow                'iという変数に2行目から最終行までを順番に入れていきます
myNo = .Range("A" & i).Value    '見積書Noのセル挿入
myNameIdol = .Range("B" & i).Value    'アイドルのセル挿入
myNameOffice = .Range("C" & i).Value    '事務所のセル挿入
myNumBook = .Range("D" & i).Value    '部数のセル挿入
myNameType = .Range("E" & i).Value    '販売形式のセル挿入
myNumPrice = .Range("F" & i).Value    '卸価格のセル挿入
myNoPostal = .Range("G" & i).Value    '〒のセル挿入
myNameAddress = .Range("H" & i).Value    '住所のセル挿入
myNoTel = .Range("I" & i).Value    '電話番号のセル挿入
myFree = .Range("J" & i).Value    '担当のセル挿入
myPayment = .Range("K" & i).Value    '支払日のセル挿入

myNameSaleType = "委託販売価格:1000円(税込) 卸価格:" & myNumPrice & "円(税込)"    '説明の生成
myNamePerson = myFree + "様"  '担当に様

With Worksheets("入力")       '「顧客情報」⇒「入力」へ反映
.Range("AP6").Value = myNo
.Range("BM11").Value = myNameOffice
.Range("BM13").Value = myNoPostal
.Range("BM15").Value = myNameAddress
.Range("BM17").Value = myNoTel
.Range("BM21").Value = myNamePerson
.Range("BM23").Value = myPayment
.Range("B41").Value = myNameIdol
.Range("B39").Value = myNameType
.Range("X39").Value = myNumBook
.Range("AF39").Value = myNumPrice / 1.08

With Worksheets("申込書")       '「印刷用」シートで
'                .PrintPreview    '「印刷用」シートをプレビューします
.PrintOut Copies:=1, Collate:=True '「印刷用」シートを印刷します
End With  'With Worksheets("印刷用") に対応する締めです
End With  'With Worksheets("印刷用") に対応する締めです
Next i        'Forに対応するものです

End With          'With Worksheets("名簿")に対応する締めです

End Sub               'Sub 帳票印刷()に対応する締めです

試したこと

〒のセルに郵便番号を入力をしたところ「入力した値は正しくありません。ユーザーに設定によってセルに入力できる値が制限されています。」
と表示されます。
VBAにふれたことがないので
どのように修正したらよいのか教えていただけると助かります。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

入力した値は正しくありません。ユーザーに設定によってセルに入力できる値が制限されています。

このエラーメッセージはVBAとは無関係に、設定されている入力規則に適合しない値をセルに入力しようとしたときに出てくるものと思います。
コードを見るに、郵便番号は Long 型で扱おうとしているようなので、数値しか入力できないような規則が設定されているのではないかと思います。「〒100-0001」や「100-0001」はNGで、「1000001」と入力しなければならないものと推測します。

実行時エラー'13':
型が一致しません。

こちらの意味は、実行時エラー13で検索したらいくらでもわかりやすい解説が出てきますので併せて参照いただきたいですが、 変数 myNoPostal は Long 型を受け入れるように宣言されているのに、数値として処理できない「〒100-0001」や「100-0001」 (= String)を代入しようとしたために、エラーになっているものと推測します。

回答とは関係ないですが、みづらいので、質問文中のコードは コードブロック (バッククォート3つ + 言語名) で囲んで提示してください。あと End With の数があるべき数よりも少ないように見えます。コードは省略せずに正確に提示してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る