リンクして引っ張ってきたデータを、
何文字目で改行するか,その都度決めることはできますか?
リンクしてくるデータが、毎回同じ文字数目で改行したいわけではなくて、
今回は8文字目と16文字目で折り返したい…
今回は9文字目と20文字目で折り返したい…など。
ついでに!!!
折り返した文字列の頭に1文字空白を挿入したいのですが。
そんな贅沢でワガママなことはできますか?
もしかして、申し上げている意味自体が不明でしょうか?

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

A 回答 (4件)

質問では、規則性はなさそうだし、折り返し数も2個以上かもしれないということで、指定した文字数で折り返すユーザー定義関数を作りました。

手順も書きましたのでチャレンジしてみて下さい。最初はみんな超初心者です。

折り返し箇所の指定は任意の個数可能です。長くなるので、9個目で改行、6個目で改行のように指定を昇順に指定しない場合は対応していません。

扱うのは全角文字の文章と想像しています。(半角でもOKですが)『ついでに』の先頭の空白は全角空白にしています。

使い方ですが、今、Bシートの該当セルは =VLOOKUP(・・・・・) となっていると思いますが、これを
=Orikaeshi(VLOOKUP(・・・・・),8,16) や
=Orikaeshi(VLOOKUP(・・・・・),9,20,26,32) のようにします。
また、該当セルの書式設定の配置は折り返して全体を表示するにチェックを入れておきます。うまくいけばいいえすが。

ツール→マクロ→Visual Basic Editor でVBE画面に移り、
挿入→標準モジュール で標準モジュールを挿入しそこに下記コードを貼り付けて下さい。

'指定文字数で折り返し。(先頭に全角空白を挿入)
Public Function Orikaeshi(Bunsyo As String, ParamArray aryNagasa() As Variant)
Dim L As Integer 'カウンタ
Dim mojisuu As Integer '1行文字数
Dim wkBunsyo As String '処理用変数

Bunsyo = " " & Bunsyo
For L = 0 To UBound(aryNagasa())
If L = 0 Then
mojisuu = aryNagasa(L)
Else
mojisuu = aryNagasa(L) - aryNagasa(L - 1)
End If
wkBunsyo = wkBunsyo & Left(Bunsyo, mojisuu) & vbLf
Bunsyo = Mid(Bunsyo, mojisuu + 1)
Next
wkBunsyo = wkBunsyo & Bunsyo
Orikaeshi = wkBunsyo
End Function
    • good
    • 0
この回答へのお礼

締め切ってしまってから気がつきました…。
改行ごとの頭に空白を入れたかったのでした。
説明不足で申し訳ありませんでした。
でも、他はすばらしくうまく行きました。

「改行ごとに頭に空白を入れるには?」として、新たに質問をしておきますので、
また機会がありましたらお世話してください。
ありがとうございました。

お礼日時:2001/08/05 14:53

どもども田吾作7です。



急いで書きます。

改行するからには、何らかの理由があるから改行するんですよね?

たとえばVlookUpでもってくるデータが文章で、「本日は晴天なり。だけど明日は雨。」というデータを持ってくるとします。
そのデータが表示では「本日は晴天なり。だ(改行)けど明日は雨。」とならないように、読点の次の位置から改行を行うという規則性を持たせたら、「本日は晴天なり。(改行)だけど明日は雨。」というようになります。


あっΣ( ̄ロ ̄lll) 待ち合わせの時間が・・・急がねば・・・

では出かけます。
    • good
    • 0

どもども田吾作7です。



リンクしたデータは基本的に同じデータ値を持つために、改行を任意でというのはできません。
[A1]の内容が1999/7/14 [B1]に数式=A1だったとします。その[B1]の表示を1999年7月14日にするのは可能です。これは同じデータ値なのですが、表示形式を加工することで実現可能です。

しかし、行いたいことは改行ですよね?改行は"あ"とか"E"とかと同様に"(改行コード")という文字がデータに必要になります。
[A1]の内容"abcdefg"を[B1]の内容"abcd(改行コード)efg"と変更するわけですから、データ値が変わることになります。ですのでVLOOKUP関数だけではムリだと思います。

改行するのに規則性はありますか?
それと今日は午後3時まで予定があるので、以後すぐの回答は出来ませんので、、、
_(._.)_

でわでわ
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます。
規則性とは…???

説明もできなくて、誠に申し訳ありません。

もうお分かりのように、私はパソコンに関して、超初心者なのです。
それでも教えていただけますか?

お礼日時:2001/07/14 12:44

どもども田吾作7です。



エクセルの話ですよね?

たぶん[A1]のセルに"abcdefg"と入っていて、[B1]のセルには数式[=A1]みたいになっていて、[B1]のセル内容を、任意の位置で改行して表示したいという意味ですか?

もうちょっと情報が・・・

この回答への補足

エクセルです。
Aシートに情報が入っていて、BシートにVlookupでデータをリンクさせています。
A1セルに”abcdefg”からはアナタ様のご想像通りです。
もしかして、まだ意味不明でしょうか…。

本当にド素人なので、誠にお手数をおかけしますが、
再度お返事をいただけませんでしょうか。

補足日時:2001/07/14 12:13
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

QVB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可

VB2010にて、ラベルの文字を6文字目で改行して表示したいのですが可能でしょうか?
Label5.***文字数指定*** のようなコードがあれば助かるのですが、
どなたかご存知でしたら教えてください。
よろしくお願いいたします。


Label5.text="あいうえおかきくけこ"

【表示】
あいうえお
かきくけこ

Aベストアンサー

実際には 6文字以上あるかどうかを確認してからになると思います。
Dim txt As String = "あいうえおかきくけこ"
Label5.Text = txt.Insert(5, vbCrLf)
とか。

Q「Alt+Enter」で折り返した文字列。1行目は何文字? 2行目は何文字?

セルの中に、「ALt+Enter」で複数行に折り返している文字列があって、
1行目は何文字で、折り返した2行目は何文字、3行目は何文字…
とカウントさせたいのですが…???
無理???
できましたら、具体的に記述して教えてください。

Aベストアンサー

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進める
MsgBox rw & "行目は " & pot - 1 & " 文字です"
moji = Mid(moji, pot + 1) '改行文字の次からを新たな検索対象にする

pot = InStr(moji, vbLf) '改行コードの位置は?
Wend
End Sub

こんな書き方もあるということで・・・
対象セルを1つ選択して下記マクロを実行します。

Sub MojisuCount()
Dim moji As String '選択セルの内容
Dim rw As Integer '行カウンタ
Dim pot As Integer 'Instrで調べた改行コードの位置

moji = Selection & vbLf '選択セルの文字の最後に改行を付加(判定を不要にする)
pot = InStr(moji, vbLf) '改行コードの位置は?
While pot > 0 'なくなるまで続ける
rw = rw + 1 '行を進め...続きを読む

Qソフト改行文字が入らず困っています

 VB6環境で、テキストボックスにEM_FMTLINES(= &HC8)をSendMessageしソフト改行文字を入れた形でテキストを取得したいのですが、希に複数行入力されているにもかかわらず、ソフト改行文字が追加されない場合があります。

 MultiLineをtrueにしたテキストボックス「text1」とボタン「Command1」をフォームに貼り付け、以下のようなテストプログラムを作成してみました。(お見苦しいところありましたらすみません)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const EM_FMTLINES = &HC8 'ソフト改行文字を設定/削除する定数

Private Sub Command1_Click()
Dim ret As Boolean
Dim str As String

ret = True

'ソフト改行文字を付加
Call SendMessage(Text1.hwnd, EM_FMTLINES, 1&, ByVal 0&)

str = Text1.Text
If InStr(str, vbCr & vbCr & vbLf) = 0 Then
MsgBox "失敗!"
ret = False
End If

'ソフト改行文字を削除
Call SendMessage(Text1.hwnd, EM_FMTLINES, 0&, ByVal 0&)

If ret = True Then
MsgBox "成功"
End If

End Sub

 テキストボックスの横幅をある程度狭くし、複数行になるよう適当に文字を入力しボタンをクリックすると、ほとんど成功するのですが、確かに20回に1回くらい失敗します。
 失敗した際は何度ボタンをクリックしても失敗します。逆に成功した文字列でなんどもボタンをクリックしても成功しか帰ってきません。

 試した環境
  WindowsXP Pro SP2、Windows2000 SP4

 なんとも法則性も見つからず、途方に暮れております。決方法やこんな事象ご存知でしたら助けて頂けないでしょうか。よろしくお願い致します。

 

 VB6環境で、テキストボックスにEM_FMTLINES(= &HC8)をSendMessageしソフト改行文字を入れた形でテキストを取得したいのですが、希に複数行入力されているにもかかわらず、ソフト改行文字が追加されない場合があります。

 MultiLineをtrueにしたテキストボックス「text1」とボタン「Command1」をフォームに貼り付け、以下のようなテストプログラムを作成してみました。(お見苦しいところありましたらすみません)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd A...続きを読む

Aベストアンサー

たぶん EM_SETWORDBREAKで EditWordBreakProcを登録してから
EM_FMTLINESを設定して使うのだろうと思いますよ

ちょっと試してみたんですが EditWordBreakProcを設定した後IDEがクラッシュしてしまう現象が出てますので確信はないんですけど ・・・

判断は vbCr vbCr vbLf の並びでチェックでいいと思います

QVB6のテキスト処理 さまざまな文字コード/改行で対応

VB6のテキスト処理で、Open InputとLine inputを使った場合に
文字コード/改行コードが SJIS/CRLFの時は正しく1行を読み込む事ができますが、改行がLFの時は正しく1行を読み取りません。

改行コードがLFもしくはCRの場合でも正しく1行を読み取る方法はあるのでしょうか?

また、文字コードに関してもEUCやUTF-8,JISでも対応できる方法がありましたら教えて下さい。

Aベストアンサー

CRの場合は改行コードとして認識するかと思いますが、確認されていますか?

LFの場合は、Inputで読み込んでLFを認識しつつ取り出すしか内かと思います。

文字コードに関してはADODB.Streamについて調べてみてください。
UTF-16であればFileSystemObjectを使って読み込むことが出来ます。

QAlt+Enterでセル内改行された文字をVBで認識させるには?

Excel2000です。

例えばA1に以下の様にAlt+Enterで改行された文字が書かれている時に
IF文を使ってマクロを実行したい場合、???にはどう書けば良いのでしょうか?
???に、1234Alt+Enter5678 と同じとさせる書き方です。
┌──┐
│1234│
│5678│
└──┘

Dim 認識 As String

認識 = Cells(1,1).Value
IF 認識 = ??? Then
・・・・実行したいマクロ

Aベストアンサー

"1234"+Chr(10)+"5678"です。


人気Q&Aランキング

おすすめ情報