Excel VBA質問箱 IV

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

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


39 / 13006 ツリー ←次へ | 前へ→

【79003】next に対応するforが無い わたる 17/4/10(月) 20:31 質問[未読]
【79004】Re:next に対応するforが無い γ 17/4/10(月) 21:01 発言[未読]
【79006】Re:next に対応するforが無い わたる 17/4/11(火) 12:31 お礼[未読]
【79009】Re:next に対応するforが無い マナ 17/4/13(木) 22:47 発言[未読]

【79003】next に対応するforが無い
質問  わたる  - 17/4/10(月) 20:31 -

引用なし
パスワード
   シート”俺”の項目内容を一セルごとにコピーして
シート”明細表”の各セルにペーストし、俺が9項目に達したら
プリントしまた次の項目をコピペして最後は9項目に達しなくても
プリントする目的で作りました。(プリントの部分は割愛しています)
プリントまでは順調に動作していたのですが。突如題名の様なエラーに
なりました。
どこに問題があるのか思い当る箇所は訂正したのですが改善に至りません
どこに問題があるかお分かりになる方がいらっしゃいましたらご指導をお願い
致します

Sub mpri2()
' m_pri Macro
'定義
 Dim sgyou_lngRow As Integer '俺
 Dim sretu_lngRow As Integer
 
 Dim hyouji As String '保持
 Dim frg As Long
 Dim pfrg As Long

 Dim mgyou_lngRow As Integer '明細
 Dim mretu_lngRow As Integer
 
'初期値
  '俺
  sgyou_lngRow = 21
  sretu_lngRow = 2
 
  '明細
  mgyou_lngRow = 2
  mretu_lngRow = 3
  '保持
  frg = 0
  pfrg = 0
'クリア
  Sheets("明細票").Select
  Range( _
    "C2,C3,C4,C5,G2,G3,G4,G5,K2,K3,K4,K5,C9,C10,C11,C12,G9,G10,G11,G12,K9,K10,K11,K12,C16,C17,C18,C19,G16,G17,G18,G19,K16,K17,K18,K19").Select
  Selection.ClearContents
  hyouji = ""
'開始

For sgyou_lngRow = 21 To 35

  Sheets("俺").Select
  If Cells(sgyou_lngRow, 22).Value <> "" Then
    hyouji = Cells(sgyou_lngRow, sretu_lngRow).Value
    Sheets("明細票").Select
    Cells(mgyou_lngRow, mretu_lngRow).Value = hyouji
    Sheets("俺").Select
    hyouji = ""
   
    sretu_lngRow = sretu_lngRow + 5
    hyouji = Cells(sgyou_lngRow, sretu_lngRow).Value
    Sheets("明細票").Select
    mgyou_lngRow = mgyou_lngRow + 1
    Cells(mgyou_lngRow, mretu_lngRow).Value = hyouji
    Sheets("俺").Select
    hyouji = ""
   
    sretu_lngRow = sretu_lngRow + 2
       hyouji = Cells(sgyou_lngRow, sretu_lngRow).Value
    Sheets("明細票").Select
    mgyou_lngRow = mgyou_lngRow + 1
    Cells(mgyou_lngRow, mretu_lngRow).Value = hyouji
    Sheets("俺").Select
    hyouji = ""
   
    sretu_lngRow = sretu_lngRow + 9
    hyouji = Cells(sgyou_lngRow, sretu_lngRow).Value
    Sheets("明細票").Select
    mgyou_lngRow = mgyou_lngRow + 1
    Cells(mgyou_lngRow, mretu_lngRow).Value = hyouji
    Sheets("俺").Select
    hyouji = ""

    If frg = 0 Then
         mgyou_lngRow = 2
      ElseIf frg = 1 Then
         mgyou_lngRow = 9
      ElseIf frg = 2 Then
         mgyou_lngRow = 16
    End If
    sretu_lngRow = 2
    mretu_lngRow = mretu_lngRow + 4
    If mretu_lngRow > 11 Then
     mretu_lngRow = 3
     mgyou_lngRow = mgyou_lngRow + 7
     frg = frg + 1
    End If
Next sgyou_lngRow
End Sub

【79004】Re:next に対応するforが無い
発言  γ  - 17/4/10(月) 21:01 -

引用なし
パスワード
   >  If Cells(sgyou_lngRow, 22).Value <> "" Then
に対応する End If が脱漏しているのではないですか?

内容は見ておりません。

【79006】Re:next に対応するforが無い
お礼  わたる  - 17/4/11(火) 12:31 -

引用なし
パスワード
   ▼γ さん:
>>  If Cells(sgyou_lngRow, 22).Value <> "" Then
>に対応する End If が脱漏しているのではないですか?
>
>内容は見ておりません。

早速の解答ありがとうございます。
ご指摘の通り脱漏していました。あれこれやっている内に消してしまったようです。その事に気付かず質問してしまい心苦しい次第です。
ありがとうございました。

【79009】Re:next に対応するforが無い
発言  マナ  - 17/4/13(木) 22:47 -

引用なし
パスワード
   ▼わたる さん:
もう見ていないと思いますが

逐一、シートを選択しない書き方をお勧めします。

頑張って考えたコードかもしれませんが
わかりにくかったので書き換えてみました。

Sub test()
  Dim r As Range
  Dim i As Long
  Dim n As Long
  
  Set r = Sheets("明細票").Range("C2:C5")
  
  Set r = Union(r, r.Offset(, 4), r.Offset(, 8))
  Set r = Union(r, r.Offset(7), r.Offset(14))
  r.ClearContents

  With Sheets("俺")
    For i = 21 To 35
      If .Cells(i, "V").Value <> "" Then
        n = n + 1
        r.Areas(n)(1).Value = .Cells(i, "B").Value
        r.Areas(n)(2).Value = .Cells(i, "G").Value
        r.Areas(n)(3).Value = .Cells(i, "I").Value
        r.Areas(n)(4).Value = .Cells(i, "R").Value
      End If
    Next
  End With
  
End Sub

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