ここから本文です

VBAについて質問です。 現在他、サイトより転用し自分なりに手を加えた プ...

tan********さん

2018/12/615:12:09

VBAについて質問です。

現在他、サイトより転用し自分なりに手を加えた
プログラムになります。

A1~H11が振り分け転記したシートだけ消えてしまいます。

振り分け転記後もA1~H11が消えないようにしたいのですが、
どのように変更すればいいでしょうか?

ご教示頂ければ幸いです。

自分で調べてみたところStaticステートメントが適用できるのかな?
と思ったのですが、どう思われますか?


Dim myDic As Object, mykey
Dim c, myVal
Dim i As Long, j As Long
Dim mySh As Worksheet
Dim myFlg As Boolean
Dim lastRow As Long, myRow As Long
Dim myK As String
Set myDic = CreateObject("Scripting.Dictionary")
' ---(1)元データを配列に格納
lastRow = Worksheets("Sheet1").Range("a" & Rows.Count).End(xlUp).Row
myVal = Worksheets("Sheet1").Range("a11", "h" & lastRow).Value
' ---(2)myDicへデータを格納
For i = 1 To UBound(myVal)
If Not myVal(i, 1) = Empty Then
If Not myDic.Exists(myVal(i, 1)) Then
myDic.Add myVal(i, 1), ""
End If
End If
Next i
mykey = myDic.Keys
'----シートの有無を確認、なければ最後部に追加
For i = 0 To myDic.Count - 1
For Each mySh In Worksheets
myFlg = False
If mySh.Name = mykey(i) Then
myFlg = True

Exit For
End If
Next mySh
If myFlg = False Then
ActiveWorkbook.Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = mykey(i)
End If
Worksheets("sheet1").Range("a1:h10").Copy Worksheets(mykey(i)).Range("a1:h10")
Next i
'----配列からデータを転記する
For i = 1 To UBound(myVal)
If myVal(i, 1) <> "" Then
myRow = Worksheets(myVal(i, 1)).Range("a" & Rows.Count).End(xlUp).Row + 1
For j = 1 To 8

Worksheets(myVal(i, 1)).Cells(myRow, j).Value = myVal(i, j)
Next j
End If
Next i
Set myDic = Nothing
Worksheets("sheet1").Rows("11:" & Rows.Count).Clear

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
41
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

リクエストマッチ

2018/12/616:55:20

プログラムを実行していませんので間違っているかもしれません。悪しからず。

>A1~H11が振り分け転記したシートだけ消えてしまいます。
「振り分け転記したシート」というのはSheet1の事ですよね?
A1:H11を消すという処理はされてないと思いますね。
11行目から下、シートの最終行まで消えてしまう、というのであれば、
Worksheets("sheet1").Rows("11:" & Rows.Count).Clear
のステップを削除してしまえば、お望み通りになるでしょう。

  • 質問者

    tan********さん

    2018/12/709:24:39

    ご回答いただきありがとうございます。

    A1~H11がきえてしまうのは、振り分けしたシートのみなります。
    sheet1のA1~H11はテンプレートとして空白のものがあり、
    その部分は消えてしまってもよいのですが、その後の各項目ごとに
    作成したシートのA1~H11には消えてほしくない情報が入っており、
    その部分が振り分けプログラム実行後にそのシートだけが消えてしまいます。
    カテゴリーマスター様の
    Worksheets("sheet1").Rows("11:" & Rows.Count).Clear
    は、sheet1の11行目から下は振り分け完了後に消えてほしい情報になります。
    説明不足で申し訳りません。
    11行より上を実行後でも消えないようなものをご教示頂きたいです。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる