宜しくおねがいします


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

あいうえお
かきくけこ
さしすせそ
たちつてと
(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)なのかとかいうのは聞かないでください・・・
そこから説明すると長くなるので。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWordの改行ルールとは

Wordに「改行ルールを使用する」というオプションがあります。
改行ルールとはどういうルールなのでしょうか。
教えてください、よろしくお願いします。

Aベストアンサー

(´・ω・`)?
「禁則文字」とか「カーニング」とかの事を言っているのだろうか。
または「長い英単語を途中でぶった切る」場合についてだろうか。
あるいは、
「改行時の書式設定」を適用するかという事だろうか。

レイアウトオプションなら「開業時の書式設定」を適用するかという事だったような気がする。(うろ覚えで不確定)
オートコレクトの「入力オートフォーマット」と「オートフォーマット」に設定通りに改行を行うかという意味。

Q結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が
それぞれ入力されているとします。
各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、
A1~A5には【あ】
A6~A10には【い】という文字が入るようにしたいと思っているのですが、
実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。

(1)結合セルを全て解除
(2)For Next if文で1行目から順にセルを見て、何も入力されていなければ、
 直上のセルに入っている文字をコピーする。

そこで、下記のような方法で高速化できないか考えたのですが、記述がわかりません。
ご教授頂けますでしょうか。
または、他に高速化できる方法がありましたらお教え頂けますと幸いです。

(1)上から順に結合セルを探す。
(2)結合セルに当たったら、結合セルを構成する先頭セルと末尾セルのアドレスを変数に記憶
(3)該当の結合セルを解除
(4)記憶したら先頭セルの内容を、先頭セル直下~末尾セルまでにコピー
(5)末尾セルの直下から、(1)~(4)を繰り返す。

どうぞ、よろしくお願いいたします。

結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が
それぞれ入力されているとします。
各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、
A1~A5には【あ】
A6~A10には【い】という文字が入るようにしたいと思っているのですが、
実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。

(1)結合セルを全て解除
(2)For Next if文で1行目から順にセルを...続きを読む

Aベストアンサー

使用範囲が少なければ、時間はそれほどかからないと思います…

Sub 結合解除()
 Dim 範囲 As Range
 Dim 結合範囲 As Range
 Dim 値 As Variant
 For Each 範囲 In ActiveSheet.UsedRange
   If 範囲.MergeCells Then
     Set 結合範囲 = 範囲.MergeArea
     値 = 範囲
     範囲.UnMerge
     結合範囲 = 値
   End If
 Next
End Sub

Q単語の途中での改行のルール

単語の途中での改行のルールについての質問です。たとえば辞書でbeautifulを引くと、beau・ti・fulと見出しに出ており、二か所で区切られています。つまり、beau(改行)tiful としても、beauti(改行)ful としても、どちらでも良いのでしょうか? 
それから、このような区切りのない単語の途中では、絶対に改行をしてはいけないのでしょうか?
手書きの場合や、自動改行の設定ができないソフトで文書を作る場合などに必要ですので、改行のルールについて改めて伺いたく思いました。よろしくお願いします。

Aベストアンサー

>beau(改行)tiful としても、beauti(改行)ful としても、どちらでも良いのでしょうか?
その通りです。

>このような区切りのない単語の途中では、絶対に改行をしてはいけないのでしょうか?
基本的にはそうです。

どの辞書にも最初に「凡例」のようなものがついていると思います。
このような改行可能な切れ目は,音節の区切り(分節)です。
音節というのは,母音を中心にその前後に子音がついた発音上の一つのかたまりです。

ただし,ジーニアス英和辞典では
cer・e-mo・ny
のように「・」と「-」の2つの記号を用い,
「-」では改行を避けるべきとしています。

私も,以前はテキストや模試の編集をしており,改行には気を配ったものです。

できれば単語の途中の改行は避けた方がいいのですが,場合によっては行が間延びすることがあり,beautiful のような長めの単語での改行は避けられないとも言えます。

QExcel VBA。結合されたセルの行数を取得しその行内の列単位で検索する方法をご教授ください。

B列がところどころ結合されているデータがあります。
※ 結合されていない行もあります。

例として、B1~B4(4行)が結合されていた場合、
1行目から4行目までの範囲で列検索を行ないたいと思っています。

Dim i As Long
If Cells(i, "B").MergeCells Then

一部分のみですみません。
行検索を行ない、B列が結合セルだったら、
Rows(i)(1~4行目)の、「列単位」で検索し(列はD列以降が検索対象)、
D列(D1~D4)に一箇所でも「○」が入力されていたら、D1に「○」と入力し、
E列以降の列にも同じ処理を繰り返したいです。

いろいろ試してみたのですがうまくいきませんでした。
検索方法を教えていただけたら幸いです。よろしくお願いします。

Aベストアンサー

質問を読み違えていました。ユーザ定義関数ではできませんので、マクロでの実装です。

Sub sample()
Dim I As Long
Dim J As Long
Dim M As Long
Dim R As Range
I = 1
Do While I <= Cells.SpecialCells(xlCellTypeLastCell).Row
If Cells(I, "B").MergeCells Then
M = Cells(I, "B").MergeArea.Rows.Count
For J = 4 To Cells.SpecialCells(xlCellTypeLastCell).Column
Set R = Range(Cells(I, J), Cells(I + M - 1, J))
If WorksheetFunction.CountIf(R, "○") > 0 Then
Cells(I, J).Value = "○"
End If
Next J
I = I + M
Else
I = I + 1
End If
Loop
End Sub

質問を読み違えていました。ユーザ定義関数ではできませんので、マクロでの実装です。

Sub sample()
Dim I As Long
Dim J As Long
Dim M As Long
Dim R As Range
I = 1
Do While I <= Cells.SpecialCells(xlCellTypeLastCell).Row
If Cells(I, "B").MergeCells Then
M = Cells(I, "B").MergeArea.Rows.Count
For J = 4 To Cells.SpecialCells(xlCellTypeLastCell).Column
Set R = Range(Cells(I, J), Cells(I + M - 1, J))
...続きを読む

Q改行のルール

書類作成時、ワードにて文章を打っていると改行が文章の途中でされています。
正式な文章の場合、ワードでの改行ルールってどうなっているのでしょうか?


時下ますますご清栄のこととお喜び申し上げます。日ごろは格別のご愛顧を賜
りまことにありがとうございます。さて、早速ながら、下記の書類を同封させ
ていただきますので、ご査収のうえ、ご配慮賜りますようお願い申し上げます。

時下ますますご清栄のこととお喜び申し上げます。日ごろは格別のご愛顧を
賜りまことにありがとうございます。さて、早速ながら、下記の書類を
同封させていただきますので、ご査収のうえ、ご配慮賜りますよう
お願い申し上げます。

上の例は改行キーを押さずそのまま文章を打った結果で、下は改行キーを押して
読みやすくしています。改行の正解はなんなのか、教えてください。

Aベストアンサー

>下は改行キーを押して読みやすくしています…

? ? ?
読みやすくもないですよ。
文節の途中で改行するものではありません。

メールでなく紙文書なら、
------------------------------------------
 時下ますますご清栄のこととお喜び申し上げます。日ごろは格別のご愛顧を賜りまことにありがとうございます。
 さて、早速ながら、下記の書類を同封させていただきますので、ご査収のうえ、ご配慮賜りますよう お願い申し上げます。
------------------------------------------
あるいは、
------------------------------------------
 時下ますますご清栄のこととお喜び申し上げます。
 日ごろは格別のご愛顧を賜りまことにありがとうございます。
 さて、早速ながら、下記の書類を同封させていただきますので、ご査収のうえ、ご配慮賜りますよう お願い申し上げます。
------------------------------------------
でしょう。

>下は改行キーを押して読みやすくしています…

? ? ?
読みやすくもないですよ。
文節の途中で改行するものではありません。

メールでなく紙文書なら、
------------------------------------------
 時下ますますご清栄のこととお喜び申し上げます。日ごろは格別のご愛顧を賜りまことにありがとうございます。
 さて、早速ながら、下記の書類を同封させていただきますので、ご査収のうえ、ご配慮賜りますよう お願い申し上げます。
------------------------------------------
あるいは、
---------------...続きを読む

Qエクセル2013でセルに例えばタイムという文字を入れるとその文字が赤に変わる方法を教えて下さい、宜し

エクセル2013でセルに例えばタイムという文字を入れるとその文字が赤に変わる方法を教えて下さい、宜しくお願いいたします!

Aベストアンサー

こんにちは

限定的でよいのなら・・・
条件付き書式で、「セルの値がタイムの時、書式を赤に指定」しておくことで実現できます。

QHTMLコードを一定ルールでインデント・改行してくれるソフトは?

既に書いてしまったHTMLコードを一定のルールでインデント・改行してくれるソフトを探しています。(Win-XP用)
先日、
「HTML整頓くん 0.10β 」
http://www.vector.co.jp/soft/win95/net/se382567.html
というフリーソフトを見つけたのですが、何から何まで改行してしまうのでちょっと具合が悪いのです。(<br>とか<b>は改行したくない)
どなたかいいソフトご存知ありませんでしょうか?
DreamWeaverやホームページビルダーにそんな機能があるというならそれでも結構です。
よろしくお願いいたします。

Aベストアンサー

[コマンド]→[ソースフォーマットの適用]で整頓されます。通常はこの機能だけで十分だと思います。


改行・インデントなどをタグごとに設定したいときには[編集]→[タグライブラリ]で設定します。

※DWMX2004とDW8での操作方法です。それ以前のバージョンは使ったことがないのでわかりません。

Qエクセル2013VBA結合セルの間のセル位置取得

いつもお世話になってます。
エクセル2013VBAで質問です。

B3:B4セルが結合されています。また、C3:AG3セル(31セル分)も結合されています。
その時、C4:AG4セルを取得したいのですが位置がずれて思うように取得できません。
どのような指定をすればよろしいでしょうか?
お手数ですがお願いいたします。
下記は試してみてだめだったもののうちの一つです。

Sub test()
Range("B3").Offset(0, 1).MergeArea.Select
Range("B3").Offset(1, 0).Resize(1, 31).Select
End Sub

Aベストアンサー

Range("B3").Offset(, 1).Offset(1).Resize(1, 31).Select
こんな感じ?

Qホームページからコピーしてきたテキストを自動改行させたい

ホームページからコピーしてきたテキストを自動改行させたい

某社にてホームページからコピーしたテキストを、ある法則にしたがって改行する編集作業を行っています。
しかしその内容がかなり多く、改行を行うだけの作業に20分もかかってしまいます。そこでマクロにて何とか編集できないものかと考えております。

改行ルール
・半角60文字(全角30文字)で改行したい
 →例外:改行した際に、次の文頭に記号が来る場合は改行せず、61文字目(全角なら31文字目)で改行する
   例:、。や、」のような〆記号。小文字(っ、ぁ等)
・上記のルールでも、冒頭分は必ず60文字以上にする必要があるため、60文字を超えたら「)」←この記号で改行するようにしたい

当方マクロに限らず、プログラミングについては初心者です。
自分なりに探してみて、60文字での改行についてはなんとか作れましたが、記号が来た場合のIFの使い方が、まったく検討が付きません。
もし上記のマクロができましたら、命令文について簡単な解説がいただけるとありがたいです。

以上、よろしくお願いいたします。

ホームページからコピーしてきたテキストを自動改行させたい

某社にてホームページからコピーしたテキストを、ある法則にしたがって改行する編集作業を行っています。
しかしその内容がかなり多く、改行を行うだけの作業に20分もかかってしまいます。そこでマクロにて何とか編集できないものかと考えております。

改行ルール
・半角60文字(全角30文字)で改行したい
 →例外:改行した際に、次の文頭に記号が来る場合は改行せず、61文字目(全角なら31文字目)で改行する
   例:、。や、」のような〆...続きを読む

Aベストアンサー

貼り付けた先のソフトは何なのか。一番大切なことが書いてない。
エクセルかワードかその他か。
ワードならプログラムで扱うのは、直ぐは無理でしょう。情報が少ない。
エクセルでも、文章の形の(内容と絡んだ)取り扱いは難しい。
自分で、IF文を羅列して、ルールを盛り込まざるを得ない泥臭いコードとなろう。
ーー
出てきている語句
文字数を数えるコード
文頭
記号
改行
全角
小文字(文頭以下は、判別するコードの書き方や関数の書き方)
など簡単に日本語で使ってますが、判別する関数も十分になく、一文字ずつ判別が必要だったりして、簡単ではない。
Googleででも、「記号 VBA」「記号 VBA 判別」などで照会してみること。よいのが無いが、基礎的なことで
http://www.geocities.jp/cbc_vbnet/function/mojireyu_function.html
を参考に。
===
自分は出来ないから、「プログラムを作ってくれ」は、本コーナーの規約違反のはず。自分で努力してください。初心者に適した課題では無いと思うが。
ーーー
>冒頭分は必ず60文字以上にする必要があるため
何の冒頭か。文章なら1つしかないかも。
章の冒頭だとしたら、どうして判別するのか。
自分だけが、わかっていることは無いか、読者側のことを考えて質問文を書くこと。
この訓練が、プログラム作成にも役立つと思う。

貼り付けた先のソフトは何なのか。一番大切なことが書いてない。
エクセルかワードかその他か。
ワードならプログラムで扱うのは、直ぐは無理でしょう。情報が少ない。
エクセルでも、文章の形の(内容と絡んだ)取り扱いは難しい。
自分で、IF文を羅列して、ルールを盛り込まざるを得ない泥臭いコードとなろう。
ーー
出てきている語句
文字数を数えるコード
文頭
記号
改行
全角
小文字(文頭以下は、判別するコードの書き方や関数の書き方)
など簡単に日本語で使ってますが、判別する関数も十分...続きを読む

QVBA あるセルの内容と同じ内容のセルを検索してその横のセルをコピーして貼り付ける

VBAの質問です。
Sheet1のA2のセルと同じ文字列をSheet2のB列で検索し、検索された同じ文字列のセルの右隣をSheet1のA4にコピー貼り付け、同じ文字列のセルの2つ右隣~4つ右隣のセルまでをB2~B4に縦と横を入れ替えてコピーし貼り付けたい。
宜しくお願いします。

Aベストアンサー

こんばんは!

なかなか回答が付かないようなので・・・
Sheet2のB列に重複データはないという前提です。

Sub Sample1()
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
Set c = wS.Range("B:B").Find(what:=.Range("A2"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Range("A4") = c.Offset(, 1)
c.Offset(, 2).Resize(, 3).Copy
.Range("B2").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m

こんばんは!

なかなか回答が付かないようなので・・・
Sheet2のB列に重複データはないという前提です。

Sub Sample1()
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
Set c = wS.Range("B:B").Find(what:=.Range("A2"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Range("A4") = c.Offset(, 1)
c.Offset(, 2).Resize(, 3).Copy
.Range("B2").PasteSpecial ...続きを読む


人気Q&Aランキング

おすすめ情報