【先着1,000名様!】1,000円分をプレゼント!

教えてください。
エクセルでインデントした部分を空白に変更するマクロ(?)とか
ありますか?
インデントで指示したものをテキストにして、他で流用する場合に
頭揃えになって困ってます。
できれば、インデント1→1文字の空白
     インデント2→2文字の空白 になると嬉しいです。

A 回答 (1件)

インデントってセル内でのことですよね?


こんなのはいかがでしょう。

Sub test01()
With ActiveSheet
For Each c In .UsedRange
If c.Value <> "" Then
If c.IndentLevel > 0 Then
c.NumberFormatLocal = "@"
c.Value = Application.Rept(" ", c.IndentLevel) & c.Value
c.AddIndent = False
c.HorizontalAlignment = xlGeneral
End If
End If
Next
End With
End Sub
    • good
    • 1
この回答へのお礼

早速の回答ありがとうございます。
VBAはほとんど解らないのですが、コピーペーストで試してみたと
ころ望むと形になりました。一部空白を和文に変更しましたが……
直ぐに書けちゃうんですね!
じっくりプログラムを拝見して勉強いたします。
 御 礼

お礼日時:2008/07/15 17:29

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

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

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

Qエクセルのセルの中で指定した行のインデントを変える方法はありますか?

Excel2000を使用しています。
エクセルを使って文章を書かなければならないのですが、同じセル内ですべての行のインデントを変更するのではなく、2行目以降のインデントだけを変えることはできますでしょうか?
以下のようにしたいと思っています。

(1)あああああああああああああああああああああああああああああ
   ああああああ

このように文字の開始位置を同じセル内で揃えたいのです。セル内での段落機能があれば可能なのですが見当たりません。よろしくお願いします。

Aベストアンサー

No.3のe10goです。

>Word使える環境にはありますが、wordの表組みというものはどのように使うのでしょうか。

「表の挿入」ボタンで、表を挿入できます。
Wordのメニューの下に、コマンドボタンが並んでいますが、その中に「表の挿入」ボタンがあります。
四角の枠に枠の上が太い黒線で、中が網目状になっています。
「表の挿入」ボタンをクリックすると、灰色枠に白の四角が4行5列表示されるので、それをドラッグすると、その枠の下に「4×5表」のように表示されます。
挿入したい表の大きさになった所でドラッグを離すと、Word文書のカーソルのある場所に表が挿入されます。
それぞれのセルの幅、高さは、ルーラで調整できます。
また、ルーラを使ってセル毎、または複数のセルを選択して、インデントを設定できます。

「表の挿入」ボタンが見当たらない、または分からないなら、
「表示メニュー」⇒「ツールバー」⇒「ユーザー設定」⇒「コマンド(タブ)」⇒
「(分類)罫線」⇒「表の挿入」で追加できます。

Qエクセル セル内文字位置のインデントについて

日記表を作りました。

(1)内容部分の文字内容が左ずめになっていますが、インデントを入れたいのですが、1インデントは

できますが、空きすぎです。なんとか0.5インデントはできないものでしょうか?

(2)また、縦位置の下に、「前後にスペースを入れる」とありますが、どのような時、使うものですか、

使い方を教えてください。(試したいのですがどうしても、チェックが入りません)

アプリは2007です。

Aベストアンサー

(2)に関しては
横位置をインデント設定0で【均等割り付け】を選択した場合のみ指定できます


(1)に関して
表示形式でユーザー定義を選択して、先頭にスペースを挿入する事で見た目上空白を空ける事ができます

Q【Excel】 セルの色での判断はできますか?

使用環境:Office2003

条件付書式を使用して、セルの値がxxならばセルを着色する・フォントを変える、というのは可能ですが、

逆に

セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する

ということは可能でしょうか?
※VBAを使わなければそれにこしたことはないですが、
 必要ならばコーディングも教えてください

よろしくお願いします。

Aベストアンサー

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとVBAを使用しないとセルの色は取得できません

>セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する
VBAを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは?

ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。
ワークシート画面に戻って、適当なセルに
=CellColor(A1)
と入力してみて下さい。A1セルの色番号が表示されます。(背景色なしの場合は0が返ります)
この戻り値判定して、関数などでセルに値をセットすればよいでしょう

Function CellColor(ByVal rng As Range)
With rng.Cells(1, 1).Interior
If .ColorIndex = xlNone Then
CellColor = 0
Else
CellColor = .ColorIndex
End If
End With
End Function

ただしセルの背景色を後から変えても、ユーザ定義関数の戻り値は自動的には変わりません。式を入力した後で背景色を変更した場合は
 ALT+Ctlr+F9
で強制再計算させる必要があります。

過去の質問を検索していただくと、たくさんの事例がありますが、結論から言うとVBAを使用しないとセルの色は取得できません

>セルの色がxx(例えば赤等)ならば、隣のセルに1を代入する
VBAを使用すればもちろんできますが、これは「例えば」の質問であって、このコードを書いても意味はないのでは?

ですから汎用的に使えるユーザ定義関数にしました。以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセル・文字列の先頭に空白を挿入する

空白を削除するという質問はよくあるのですが、空白を作るという操作がわかりません。とっても簡単すぎて質問されていないのでしょうか?
すでに作成済みのデータで、セルに「あああ  」と
入っているとして、「 あああ   」という風に一文字右へずらした状態にしたいのです。どうしたらよいのでしょうか?よろしくお願いします。

Aベストアンサー

表示1文字ずらしたいのでしたら、
[セルの書式設定]→[配置]タブ→文字の配置の「インデント」
ここを「1」にして下さい。
空白を実際に入れるのでしたら別シートに
=" "&Sheet1!A1
といった数式を入れて対応することになると思います。

QExcel 書式を関数で判断。

Excelで、「もしA1が緑色ならば」などと、書式を関数で判断させるにはどうすればよいのでしょうか。

Aベストアンサー

#1の回答通り関数はありません。マクロでなら可能です。

ここでは「色の付いたセルを合計」という質問が結構出ています。
http://okwave.jp/kotaeru.php3?q=2000523

Q矢印キーのロック解除方法

矢印キーがロックされてしまい、エクセルで矢印キーでのセルの移動ができません。解除方法を教えてください。

Aベストアンサー

キーボードのスクロールロックキーを押してください。
ノートPCだとFnキーを押しながらNumLkキーを押すなどなっている場合があります。

QVBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義がまずいと思うのですが、それ以上の事は分かりません。どなたか、分かる方がおりましたら、よろしくお願いします。また、プログラムは以下のようになります。

Sub 繰り返し()
'繰り返し
Dim s As Integer
For s = 0 To 17
Range("cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)").Select
Range("cells(8,s+2)").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("20081216_210647").Range( _
"cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""0810p2x"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="0810p2x"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "0810p2x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "t"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next
End Sub

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義...続きを読む

Aベストアンサー

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな(Excelで表示されている)シートが上位オブジェクトとして、自動的に認識されます。

≪例2≫
Sheets("Sheet2").Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、Rangeのみシート名が記述されています。
Sheets("Sheet2").Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
Activeなシートが、Sheet2の場合はエラーになりません。
しかし、ActiveなシートがSheet2以外の場合、エラーが発生します。
直前に、
Sheets("Sheet1").Select
などとしていれば、ActiveシートがSheet1になっていますから、エラーになります。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(8, 1), Sheets("Sheet2").Cells(1587, 2)).Select
と書いておけば安心です。
Withステートメントを使えばスッキリ纏めることができます。
With Sheets("Sheet2")
  .Range(.Cells(8, 1), .Cells(1587, 2)).Select
End With

# Sheets("Sheet2")の上位オブジェクトが省略されていることにも気がついてください。

>そこで自分で基礎を勉強したいのですが推薦できる参考書などがござ
>いましたら、教えていただけませんか?
私自身は、入門書程度の雑誌を1冊買っただけです。どれが良いとかはよく分かりません。
「マクロの記録」を活用して、参考コードを取得し、汎用性のあるコードに編集しています。
新しい単語があれば、文字カーソルを単語の上に置き、F1キーを押してVBAのヘルプを必ず見るようにしています。
躓いた時は、Web検索して欲しい情報を得たり、あるいは、こうした掲示板で先輩方のお力をお借りしています。

Excel(エクセル)VBA入門:目次
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=4651404
エクセル入門・初級編
http://www.kenzo30.com/excel_kiso.htm

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな...続きを読む

Qword置換で改行は置換できますか?

word置換で改行は置換できますか?

 一斉にEnterでの改行されている部分を置換する方法はないでしょうか?
 あればよろしくおねがいします。

Aベストアンサー

検索と置換画面の「置換」タブ画面で [オプション] を選択し、右下にある「あいまい検索」のチェックを外します。
検索する文字列にカーソルを置いて、[特殊文字] ボタン → 段落記号(P) を選択すると、検索する文字列に 「^p」が入力されます。(直接キー入力してもOKです)

置換後の文字列に置換する文字列、特殊文字を入力して置換をしますが、何も指定しないで、「置換」または「すべて置換」を行うと、改行が削除されます。

特殊文字の一覧項目の「段落記号」は[Enter]による改行で、[Shift]+[Enter]による改行は、「任意指定の行区切り(L)」です。
 

Qエクセルのfind関数で、複数の条件

エクセルで、住所に"北海道"が含まれていると、"北海道"と表示し、
"青森県"や"岩手県"などが含まれていると、"東北"と表示したいです。

以下の関数を作ったのですが、北海道のときは想定どおり"北海道"と表示されますが、
それ以外のときは#VALUE!になってしまいます。
どこが悪いでしょうか?

=if(find("北海道",A1)>0,"北海道",if(find("青森県",A1)>0,"東北",if(find("岩手県",A1)>0,"東北",if(find("宮城県",A1)>0,"東北",if(find("秋田県",A1)>0,"東北",if(find("山形県",A1)>0,"東北",if(find("福島県",A1)>0,"東北","該当なし")))))))

Aベストアンサー

添付図参照

B2: =IF(ISERROR(VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE)),VLOOKUP(LEFT(A2,4),D$1:E$48,2,FALSE),VLOOKUP(LEFT(A2,3),D$1:E$48,2,FALSE))


人気Q&Aランキング