Excelノート 05-02 行・列

HOME  検索  索引  もくじ  関数目次  前ページへ  次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

21 保護したシートの、行幅列幅を変更するには?
22 行番号または、列番号をクリックしたときだけ、保護を解除するには?
23 データが入力されている一番最後の行を取得するには?
24 選択範囲の列幅・行高さを均等に揃えるには?
25 選択したセルの行(列)番号が奇数か偶数かを判断するには?
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

21 保護したシートの、行幅列幅を変更するには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200107/01070022.txt
  「シートの保護後にセルの幅調整をするには?」 【編集ラウンジ】
Sub miko_test2()
 Dim a As Long, b As String, aa As Integer, bb As Integer
 Dim aaa As Integer, bbb As Integer
 On Error Resume Next
 a = Application.InputBox(Prompt:="行幅を変更する行番号を入力してください", Type:=1)
 aaa = Rows(a).RowHeight
 aa = Application.InputBox(Prompt:="行幅を入力してください" & Chr(13) & _
 "現在の行幅は" & aaa & "です", Type:=1)
 b = Application.InputBox(Prompt:="行幅を変更する列名を入力してください", Type:=2)
 bbb = Columns(b).ColumnWidth
 bb = Application.InputBox(Prompt:="列幅を入力してください" & Chr(13) & _
 "現在の列幅は" & bbb & "です", Type:=1)
 ActiveSheet.Unprotect
 Rows(a).RowHeight = aa
 Columns(b).ColumnWidth = bb
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
22 行番号または、列番号をクリックした時だけ、保護を解除するには?
http://www.keep-on.com/excelyou/2001lng4/200107/01070109.txt
  「ロックしたセルを含む行を削除可能にするには?」  【VBAラウンジ】
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.EntireColumn.Address = Target.Address Or _
            Target.EntireRow.Address = Target.Address Then
  ActiveSheet.Unprotect
 Else
  ActiveSheet.Protect
 End If
End Sub

  このコードの使い方は、マクロの使い方(2)該当するシートのモジュールにあります。
行番号を選択した時のみ解除する場合、2行目のコードを
 If  Target.EntireRow.Address = Target.Address Then
列番号のみの場合、
 If Target.EntireColumn.Address = Target.Address Then
にします。
23 データが入力されている一番最後の行を取得するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200107/01070330.txt
  「データが入力されているセルの最大行を求めるには?」 【VBAラウンジ】
Sub Max_R()
    MsgBox Cells.SpecialCells(xlLastCell).Row
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
24 選択範囲の列幅・行高さを均等に揃えるには?
1行だけ、または65536行全て選択(列番号で選択)している場合は列幅だけを揃えます。
1列だけ、または256列全て選択(行番号で選択)している場合は行高さだけを揃えます。
端数が出る場合、大きめにするか小さめにするか指定します。
私の環境では、行高さ最小値0.75、列幅最小値0.12ですので、とりあえずそれでやりました。
もし、環境が違うようでしたら、この数値を変更してください。 

'行高さ最小値0.75、列幅最小値0.12
Sub 列幅行高さ均等2()
 Dim R1 As Long, R2 As Long, i As Long, kei As Double, amari As Single
 kei = 0
 If Selection.Rows(Selection.Rows.Count).Row <> 65536 Then
  R1 = Selection.Row
  R2 = Selection.Rows(Selection.Rows.Count).Row
  For i = R1 To R2
   kei = kei + Rows(i).RowHeight
  Next
  Range(Rows(R1), Rows(R2)).RowHeight = kei / (R2 - R1 + 1)
  amari = kei - Selection.RowHeight * (R2 - R1 + 1)
  If amari > 0 Then
   If MsgBox(amari & " 余りました。範囲内で全てのセルの高さを均一にできません。" & vbCrLf & _
           "大きめにしますか? 小さめにしますか? 大きめなら「はい」を選んでください。", _
           vbYesNo) = vbYes Then
    Range(Rows(R1), Rows(R2)).RowHeight = kei / (R2 - R1 + 1) + 0.75
   End If
  ElseIf amari < 0 Then
   If MsgBox(amari & " 余りました。範囲内で全てのセルの高さを均一にできません。" & vbCrLf & _
    "大きめにしますか? 小さめにしますか? 小さめなら「はい」を選んでください。", _
           vbYesNo) = vbYes Then
    Range(Rows(R1), Rows(R2)).RowHeight = kei / (R2 - R1 + 1) - 0.75
   End If
  End If
 End If
 kei = 0
 If Selection.Columns(Selection.Columns.Count).Column <> 256 Then
  R1 = Selection.Columns(1).Column
  R2 = Selection.Columns(Selection.Columns.Count).Column
  For i = R1 To R2
   kei = kei + Columns(i).ColumnWidth
  Next
  Range(Columns(R1), Columns(R2)).ColumnWidth = kei / (R2 - R1 + 1)
  amari = kei - Selection.ColumnWidth * (R2 - R1 + 1)
  If amari > 0 Then
   If MsgBox(amari & " 余りました。範囲内で全てのセルの列幅を均一にできません。" & vbCrLf & _
            "大きめにしますか? 小さめにしますか? 大きめなら「はい」を選んでください。", _
            vbYesNo) = vbYes Then
    Range(Rows(R1), Rows(R2)).ColumnWidth = kei / (R2 - R1 + 1) + 0.12
   End If
  ElseIf amari < 0 Then
   If MsgBox(amari & " 余りました。範囲内で全てのセルの列幅を均一にできません。" & vbCrLf & _
             "大きめにしますか? 小さめにしますか? 小さめなら「はい」を選んでください。", _
    vbYesNo) = vbYes Then
    Range(Rows(R1), Rows(R2)).ColumnWidth = kei / (R2 - R1 + 1) - 0.12
   End If
  End If
 End If
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
25 選択したセルの行(列)番号が奇数か偶数かを判断するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200210/02100312.txt 
 「選択したセルの列番号が偶数か奇数かを調べるには?」 【VBAラウンジ】
Sub test()
 If Selection.Row Mod 2 Then
  MsgBox "奇数行"
 Else
  MsgBox "偶数行"
 End If
 If Selection.Column Mod 2 Then
  MsgBox "奇数列"
 Else
  MsgBox "偶数列"
 End If
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
26  
 
27  
 
28     
 
29  
 
30  
 
31  
 
32  
 
33  
 
34  
 
35  
 
36  
 
37  
 
38     
 
39  
 
40  
 

HOME  検索  索引  もくじ  関数目次  前ページへ  次ページへ

このページのTOPへ

inserted by FC2 system