Excelの表をCSVに変換したりデータをHTMLに変換したりする際に、
改行コードをスペースに変換したり、
に変換したりすることがあると思います。
そういう場合に、下記Replace関数にて改行コード(vbLF)を変換します。
For i = 1 To 10 'セル内の改行コードをスペースに変換してセルに代入 Cells(i, 1).Value = Replace(Cells(i, 1).Value, vbLf, "") Next i
崖っぷちITエンジニアの技術録
Excelの表をCSVに変換したりデータをHTMLに変換したりする際に、
改行コードをスペースに変換したり、
に変換したりすることがあると思います。
そういう場合に、下記Replace関数にて改行コード(vbLF)を変換します。
For i = 1 To 10 'セル内の改行コードをスペースに変換してセルに代入 Cells(i, 1).Value = Replace(Cells(i, 1).Value, vbLf, "") Next i
開いているブックに含まれているシート名を取得する方法を2つ紹介します。
1つ目はSheetsで左側からのシート番号を指定してシート名を取得する方法。
2つ目はブックに含まれるworksheetオブジェクトを一つずつ取得して、その名前を取得する方法。
どちらも同じ様に名前を取得できますが、2つ目の方法でループ内でシートオブジェクトに対し操作を行う場合に
何かと便利になるので、個人的にはおすすめです。
'1つめの方法 For i = 1 To ThisWorkbook.Sheets.Count Debug.Print Sheets(i).Name Next i '2つめの方法 Dim sht As Worksheet For Each sht In Worksheets Debug.Print "name = " & sht.Name Next sht
セル範囲内で最終行まで処理を行ったり、最終列の位置を調べることはよくあります。
その時に使える方法です。
最初は、xlDownとxlToRightを使えば良いと思ったのですが、途中で空白セルがあると、その手前の位置が返されてしまうので、セル範囲の最終位置ではないので、最終行や最終列から上、左という流れで取得します。
また、下記では調べる位置を10としていますが、通常は表の見出しや連番等の全て値が入っている行や列の位置を指定します。
また、変数に使う型は、Longが良いでしょう。
データが入っている行はintegerの範囲を超えることがよくあり、integerのままだとエラーになります。
Dim last_row as Long '最終行 Dim last_column as Long '最終列1 last_row = Cells(Rows.Count, 10).End(xlUp).Row last_column = Cells(10, Columns.Count).End(xlToLeft).Column msgbox "最終行 = " & last_row msgbox "最終列 = " & last_column
SheetやRangeオブジェクトからブック名を取得する方法
SheetやRangeオブジェクトから今開いているブック名って何だっけ?という時にParentを使ってWorkbookオブジェクトから取得します。
開いているブックが一つしかないのであれば、Thisworkbook.Nameで取得できます。
Dim sht As Worksheet 'シートオブジェクト Dim rng As Range 'レンジオブジェクト Set sht = Workbooks("Book1.xlsm").Sheets("Sheet1") Set rng = Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A1:B1") MsgBox rng.Parent.Parent.Name MsgBox sht.Parent.Name