人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのVBAのプログラミングについて質問です。

セルに以下の様な文字が入っています。

今日は

京都へ


行ってきます。


セル内はALT+ENTERキーで改行されています。

このセルの中の改行を読み取り<br>タグを付け以下のような処理をするプログラムを作成することは可能でしょうか?

今日は<br><br>

京都へ<br><br><br>


行ってきます。

この処理を値がある列A全てのセルに行うVBAプログラムを書ける方おりましたら

コードを書いていただけないでしょうか?

お手数をおかけしますがよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:VBA エクセル キー コード セル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●35ポイント

セルA1に変換元文字列、セルB1に変換後の文字列を入れるとすると、VBAのコードは以下の通り。

s1 = Range("A1").Value
s2 = Replace(s1, Chr(&HA00), "<br />")
Range("B1").Value = s2

確認していないのですが、UnicodeベースのExcelであれば、セル内改行コードは &HA0 です。

もしうまく動かないようでしたら、「セル内の改行コードに注意」を参考に、セル内改行コードを確認してください。

◎質問者からの返答

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


2 ● sub101
●35ポイント

こんなかんじかな?

 Dim target As Range
 Dim buf As String
 
 Const SOURCE = vbLf & "<br>" & vbLf
 Const SEARCH = "<br>" & vbLf & vbLf
 
 For Each target In Columns("A").SpecialCells(xlCellTypeConstants)
 
 buf = Replace(target, vbLf, "<br>" & vbLf)
 
 Do While InStr(buf, SOURCE)
 buf = Replace(buf, SOURCE, SEARCH, , 1)
 Loop
 
 target = buf
 buf = Empty
 Next
◎質問者からの返答

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

プログラムちゃんと実行されました。


3 ● SALINGER
●10ポイント ベストアンサー

sub101さんのコードがシンプルでいいですね。私の方は力技で。


Sub Macro()
 Dim str As String
 Dim i As Long
 Dim j As Long
 Dim k As Long
 Dim r As Long
 Dim LastRow As Long
 
 LastRow = Cells(Rows.Count, 1).End(xlUp).Row
 For r = 1 To LastRow
 If Cells(r, 1).Value <> "" Then
 str = Cells(r, 1).Value
 j = 0
 For i = 1 To Len(str)
 If Mid(str, i + j, 1) = Chr(&HA00) Then
 k = 0
 If i > 1 Then
 While Mid(str, i + j - k - 1, 1) = Chr(&HA00)
 k = k + 1
 Wend
 End If
 str = Left(str, i + j - k - 1) & "<br>" & Mid(str, i + j - k)
 j = j + 4
 End If
 Next i
 Cells(r, 1).Value = str
 End If
 Next r
End Sub

4 ● GIJYUTUSYA3
●10ポイント

http://www.hotdocument.net/を使えばできるかもしれません。

よろしければ、参考に。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ