人に聞けない痔の悩み、これでスッキリ >>

現在VBAを使ってシート1の内容をシート2にコピーさせるもの作りました。↓
s.Cells(r, 1).Copy Sheets("Sheet2").Range("A1")

これでさらにシート2にコピーしたないようは
同じセル内で改行したいのです。
いわばAlt+Enterキーみたいな機能なのですが・・・
つまり出力がシート1の指定セルの内容が
『新年あけましておめでとう』なのですが、シート2は
『新年あけまして
 おめでとう』という内容を出力したいのですが、
改行のプログラムはわかりますでしょうか??m(_ _)m

簡単なプログラムでもいいのです。
もしわかれば他にも応用したいので、この例で行くと『て』という文字を判別して『て』という文字があったらその文字のあとを改行させたいのですができますでしょうか?

A 回答 (1件)

こんばんわ。



改行は、「vbCrLf」を使えばできますね。
サンプルコードを下に載せて置きますので、asdasddさんの環境に合わせて改変してください。
注意事項として、セルの幅が狭いと、表示がうまくいかない事があります。

Sub test()
  Dim la As Long, lb As Long
  la = InStr(Sheets("Sheet1").Cells(1, 1), "て") '"て"の文字位置を調べる
  lb = Len(Sheets("Sheet1").Cells(1, 1)) '文字数を調べる
  If la > 0 And lb > la Then
    Selection.Cells = Left(Sheets("Sheet1").Cells(1, 1), la) _
      & vbCrLf & Right(Sheets("Sheet1").Cells(1, 1), lb - la)
  Else
     Selection.Cells = Sheets("Sheet1").Cells(1, 1)
  End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました
助かりました。

お礼日時:2005/12/18 19:58

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

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

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

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QエクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・

データの内容をひとつのセルに改行して入れていくという
作業を自動化できないでしょうか?

「データ」シート
メモ 地点 from ~ to 線種
A1,B1,C1,D1,E1,F1に上の項目があり、
メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には
=====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります)

それぞれの項目の下にデータを入力してあります。
これを「まとめ」シートに
・A~E列までをひとつのセルに改行してまとめる
・F列はその右隣にそのまま表記する

と自動でできないかと考えています。例えば、「データ」2行目に
A2 観劇
B2 日本大劇場
C2 10:00
D2 ~
E2 12:00
F2 ======
とある場合、「まとめ」シート
A2セルは
観劇
日本大劇場
10:00~12:00
と改行して入り、B2に「データ」F2の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。
よろしくお願いします。

データの内容をひとつのセルに改行して入れていくという
作業を自動化できないでしょうか?

「データ」シート
メモ 地点 from ~ to 線種
A1,B1,C1,D1,E1,F1に上の項目があり、
メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には
=====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります)

それぞれの項目の下にデータを入力してあります。
これを「まとめ」シートに
・A~E列までをひとつのセルに改行してまとめる
・F列はその右...続きを読む

Aベストアンサー

#1です。VBAの例
Sub MACRO1()
Dim RG As Range
Dim R1, R2 As Integer
Set RG = ActiveWindow.RangeSelection
R1 = RG.Row
R2 = R1 + RG.Rows.Count - 1
For I = R1 To R2
If Cells(I, 1) = "" Then Exit For
Cells(I, 1) = Cells(I, 1) & Chr(10) & Cells(I, 2) & Chr(10) & Format(Cells(I, 3), "hh:mm") & "~" & Format(Cells(I, 5), "hh:mm")
Range(Cells(I, 2), Cells(I, 5)) = Null
Next I
End Sub

QExcel:複数のセルの内容を、ひとつのセルにすべて移したい。

たとえばA.B.Cのセルがあって、この内容をDのセルに
すべて移すにはどうしたらいいんでしょうか?

A.B.Cの内容をコピー貼り付けだと、
どうしてもDひとつだけでなく、その隣のセルに
内容をコピーしてしまいます。

Aベストアンサー

コピーしたいセルを選択してCtl+C

全部を貼り付けたいセルをダブルクリック

Ctl+Vではなく、オフィスクリップボードから貼り付け

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。

以下のようなプログラムをVBAで作成したいと考えています。

A1のセルに値があれば、その値をB1に返す。
次にA2のセルに値があれば、その値をB2に返す。
A行に値がある一番下のセルまで同じようなことをさせたいと考えています。

VBAは初心者です。
どなかた宜しくお願い致します。

Aベストアンサー

#2さんと似たものですが・・・・参考にしてください。

Sub test001()
Dim i As Long
i = 1
Do While Cells(i, 1) <> ""
Cells(i, 2) = Cells(i, 1)
i = i + 1
Loop
End Sub

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"です。

QEXCEL VBA で指定した範囲に入力があるかどうか?

こんばんは!!
EXCEL VBAを使い出して、初日からつまずいてます・・・。
みなさん、アドバイスよろしくお願いします!!

で、早速、質問なんですけど、
指定したセル範囲のいずれかに入力があるか調べたいんですけど、それができるプロパティとかってあるんでしょうか?
地道にセル毎にチェックするしかないいんでしょうか??

たとえば、範囲をA1:H1として、その範囲内のセルに何か入力があったらTrueが返ってくるとか・・・。

もし、知ってる方がいらっしゃたら教えてください!!
よろしくお願いします!!!!!

Aベストアンサー

>これは、まず範囲を選択して、入力チェック()を呼ぶことなのでしょうか
書いたモジュールは範囲が指定してあります。("A1:H11"は間違いです。質問からすると"A1:H1"です)何もしないで入力チェックを実行します。
モジュールを CountA(Selecton) に変えれば任意の選択範囲がチェックの対象になります。任意の範囲を選択して実行します。
メッセージは確認するためで、IF ・・・・ で入力有無が判定できます。

>ワークシート関数CountAってどうやったら出てくるんですか??
ついApplicationと書いてしまうんですが、『WorksheetFunction.』と打てば、候補の関数名が表示されると思います。

下記の fnc入力チェック は入力有無を返すユーザー定義関数です。
書き方の例です。分かりやすくなった?この例は引数に"A1:H1"をセットしています。任意の範囲にするには Selection.Address に変えます。

Sub 入力チェック()
  Dim 入力有無フラグ As Boolean        '入力有無の答え

  入力有無フラグ = fnc入力チェック("A1:H1")  'モジュール内でA1~H1を指定(固定)

  MsgBox 入力有無フラグ            '帰ってきた答えをメッセージボックスで確認
End Sub

'入力有無を返すユーザー定義関数
Function fnc入力チェック(checkAddress As String)
  If WorksheetFunction.CountA(Range(checkAddress)) > 0 Then
    fnc入力チェック = True
  Else
    fnc入力チェック = False
  End If
End Function

>これは、まず範囲を選択して、入力チェック()を呼ぶことなのでしょうか
書いたモジュールは範囲が指定してあります。("A1:H11"は間違いです。質問からすると"A1:H1"です)何もしないで入力チェックを実行します。
モジュールを CountA(Selecton) に変えれば任意の選択範囲がチェックの対象になります。任意の範囲を選択して実行します。
メッセージは確認するためで、IF ・・・・ で入力有無が判定できます。

>ワークシート関数CountAってどうやったら出てくるんですか??
ついApplicationと書いてし...続きを読む

Qエクセル VBA セルの個数を所得する

いつも皆様には大変お世話になっております。

早速の質問ですが、

    A    B     C     D     E
1
2       123
3       123
4       123
5       123
6
7       123
とエクセルのセルがなっている場合の
上のB2から下のB7までのセルの個数を所得したいのです
B8以降にも数字が入る場合があるのと間に空白が入る場合があるので
困っています。
B2のセルは固定となっているのでB2からの判別で問題ない状況です。
どうぞ皆様お知恵をお借りしたく思っておりますのでよろしくお願いいたします。

Aベストアンサー

質問が非常に不明確なのですが・・・

所得?取得ですよね?

単にB2:B7のセルの個数をVBAで取得するなら
MsgBox Range("B2:B7").Count

B2:B7の空白でないセルの個数なら
MsgBox Application.CountA(Range("B2:B7"))

B7まででなくB2からB列のデータがある最後までのセル個数なら
MsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count

B2からB列のデータがある最後までの空白でないセル個数なら
MsgBox Application.CountA(Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row))

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QSub ***( ) と Private Sub ***( ) の違い

初歩的な質問で申し訳ありませんが・・・

自分でコードを書いていても、イベントが発生したりした時の処理で、コードのウィンドウで上のドロップダウンリストで選択できる時の処理などは自動的に[Private Sub Command1_Click( )]などと出てくるのでそのまま使っています。自分で別途プロシージャーを作成する時は[Sub ****( )]としています。
ですがその違いを理解しないまま、自分で作成する時は[Private Sub]ではなくて[Sub]を使っています。

Sub ***( ) と Private Sub ***( ) の違いは何なんでしょうか?
どなたか説明頂けませんか?
よろしくお願いします。

Aベストアンサー

「Sub」の部分にカーソルを置いて[F1]を押せばヘルプが起動します。
「指定項目」のところに「Public」と「Private」の説明がありますよ。
省略して「Sub hogehoge()」とした場合は「Public」とみなされます。

Publicは「すべてのモジュールから呼び出せるプロシージャ」ということになります。
Privateとすると「同じモジュールの中からしか呼び出せないプロシージャ」となります。

もしExcelをお持ちでしたらExcelのVBEで標準モジュールを追加し、「Sub Test1()」と「Private Sub Test2()」を作成してみてください。
そしてExcelの[ツール]-[マクロ]-[マクロ(Alt+F8)]でマクロ実行のダイアログを表示させてみるとわかります。
ここには実行できるプロシージャの一覧が表示されますが、Test1は表示されているけれどTest2は表示されません。
Test1はPublicで、Test2はPrivateだからです。


人気Q&Aランキング