マンガでよめる痔のこと・薬のこと

VBAに詳しい方お願いします。


 A列 B列 C列 D列 E列 F列 G列 H列 I列 J列…
1  1 010  a   AB
2  1 010  a      春  夏  秋  冬
3  1 010  a      上  下
4  2 020  b   BC
5  2 020  b      花
6  2 020  b      陸  空
:
:
↑を↓に変える記述教えてください。。

 A列 B列 C列 D列 E列 F列 G列 H列 I列 J列… 
1  1 010  a   AB
2  1 010  a      春 
3  1 010  a      夏
4  1 010  a      秋
5  1 010  a      冬
6  1 010  a      上
7  1 010  a      下
8  2 020  b   BC
9  2 020  b      花
10  2 020  b      陸  
11  2 020  b      空
:
:
やり方はなんでもいいのですが、
例えば
E1に値が入っていないのでカーソルを下に移動(E2へ移動)
 E2に値が入っているのでカーソルを右に移動(F2へ移動)
 F2に値が入っているので下(3行目)に新しい行を挿入し、(A2,B2,C2) を コピーして、(A3,B3,C3)に貼り付け、F2を切り取りE3に貼り付け る
 これをF2、G2、H2と繰り返してI2で空欄が出るまで続ける。
E8に値が入っていないのでカーソルを下に移動(E9へ移動)

A 回答 (3件)

こんにちは。


方法は色々あると思いますが、以下の方法では如何でしょうか。
但し、D列に展開される文字列は半角、E列に展開される文字列は全角として考えた場合です。

Sub 文字展開()
    Dim RowMax      As Long
    Dim wRow        As Long
    Dim wCol        As Integer
    Dim EditRow     As Long
    Dim wStr        As String
    Dim Sht2        As Worksheet
    '
    Set Sht2 = Worksheets("Sheet2")
    Sht2.Cells.ClearContents
    EditRow = 0
    With ActiveSheet
        wRowMax = .Range("A" & Rows.Count).End(xlUp).Row
        For wRow = 1 To wRowMax
            wStr = Left(.Cells(wRow, 4), 1)
            If Len(wStr) = LenB(StrConv(wStr, vbFromUnicode)) Then
                '必ず、半角文字
                EditRow = EditRow + 1
                Sht2.Cells(EditRow, 1) = .Cells(wRow, 1)
                Sht2.Cells(EditRow, 2) = .Cells(wRow, 2)
                Sht2.Cells(EditRow, 3) = .Cells(wRow, 3)
                Sht2.Cells(EditRow, 4) = .Cells(wRow, 4)
            Else
                '必ず、全角文字
                For wCol = 4 To 256
                    If .Cells(wRow, wCol) = "" Then
                        Exit For
                    End If
                    EditRow = EditRow + 1
                    Sht2.Cells(EditRow, 1) = .Cells(wRow, 1)
                    Sht2.Cells(EditRow, 2) = .Cells(wRow, 2)
                    Sht2.Cells(EditRow, 3) = .Cells(wRow, 3)
                    Sht2.Cells(EditRow, 5) = .Cells(wRow, wCol)
                Next
            End If
        Next
    End With
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます!さっそく実行してみたのですが
「マクロが使用できません。セキュリティ レベルが高に設定されています。また、デジタル署名された信頼された証明書がマクロに添付されていません。~~」となってしまいます。
セキュリティレベルを中にしても同じエラーが出ます。
証明書は持っていません。。ていうかよくわかりません。。
どうしたらいいのでしょうか???

お礼日時:2008/08/12 18:37

こんにちは。

No.1です。
Officeのデジタル署名に関するコンポーネントがインストールされていないかも知りません。
Officeを完全インストールしてみてください。
    • good
    • 0

マクロが使用できません。

助けてください。
http://oshiete1.goo.ne.jp/qa3032582.html?ans_cou …
この事では?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング