プロが教えるわが家の防犯対策術!

宜しくおねがいします


現在結合されたセルがありそのセル内に他のプログラムから
下記の値が挿入されるようになっています。

あいうえお
かきくけこ
さしすせそ
たちつてと
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)
(Chr(10)の改行)


他のプログラムから送られてくる値は”あ行”の1行だけだったり
”ま行”までの7行あったりとその都度変わってきます。
文字数も”あ”の1文字だけだったり”あああいいいうううえええおおお”と
文字数も変わります。

しかし下の4行分の”Chr(10)の改行”の数は変わりません。


やりたいことは↓

コマンドボタンを二つ作り、ボタンを押すたびに下にあるChr(10)の改行を
挿入したり削除したりしたいのですがどのようにすればよいのでしょうか?
追加ボタンを2回押すとChr(10)の改行が6行分になり
そこから削除ボタンを3回押すとChr(10)の改行が3行分になる・・・という感じです。


試しにマクロの記録で

セルを選択して改行を削除

をしてみたのですが思うような動きをしてくれません。

なぜChr(10)なのかとかいうのは聞かないでください・・・
そこから説明すると長くなるので。

A 回答 (3件)

Sub CommandButton1_click()


 activecell.value = activecell.value & vbLf
End Sub

Sub CommandButton2_click()
 dim buf as string
 buf = activecell.value
 If right(buf, 1) = vbLf then
 activecell.value = left(buf, len(buf) - 1)
 end if
End Sub

単純に足したり削ったりするだけのようですが。
    • good
    • 0
この回答へのお礼

ありがとうございます
やりたいことはこれでした!

お礼日時:2011/04/14 09:04

質問者の言っていることおよび必要性(コマンドボタンを2つも設けるのかなど)が良くわからない。


ーー
したいことは、いつもそのセルは10行分(空白行も含めて)とかの一定行数分にしたいのではないのか。
もしそうなら、変数に原データがセットされた段階で、その変数の値のChr(10)の数を数え、10-(その数)だけ「文字列の後尾にChar(10)を加えれば仕舞いではないのか。
>Chr(10)の数を数えーー一案としてChr(10)を空白で置き換え、文字列の長さのバイト数減少がChr(10)の存在した数で割り出す。
参考 Replace関数
http://officetanaka.net/excel/vba/function/repla …
別にVBAにはReplaceメソッドもある。
==
誤解しておればこの回答は無視してください。
    • good
    • 0

とりあえず行単位の削除、追加を・・・


LineAddとLineDel関数を書いてみましたのでボタンから呼び出してください
※データが入っている行も削除できますのでNGな場合は
 IF文などでチェックしてください


Sub LineAdd()

Dim str() As String
str = Split(Range("A1").Text, Chr(10))
ReDim Preserve str(UBound(str) + 1)
Range("A1").Value = Join(str, Chr(10))

End Sub


Sub LineDel()

Dim str() As String
str = Split(Range("A1").Text, Chr(10))
If UBound(str) = 0 Then
'1行しかない場合、セルをクリア
Range("A1").Value = ""
Else
ReDim Preserve str(UBound(str) - 1)
Range("A1").Value = Join(str, Chr(10))
End If

End Sub

この回答への補足

ありがとうございます。
こちらの方法でもやって見ます!

補足日時:2011/04/14 09:05
    • good
    • 0
この回答へのお礼

補足とお礼を間違えました

お礼日時:2011/04/14 09:05

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