2016-09-29 7 views
1

私は、A1:E5の各呼び出しを3つのワークシートの中から自分自身で識別しようとしています。だから、それぞれのようにオフに一覧表示されます(例:)シート1:$ A $ 3シート1:$ A $ 4 Sheet12:$ B $ 2VBA Excel、セルフセルフID

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim intRowIndex, intColumnIndex, intDimIndex As Integer 

'Change Colors/Fonts and Resize 
Range("A1:A" & Rows.Count).Columns.AutoFit 
Columns("A:E").AutoFit 


For intDimIndex = 1 To 3 
    For intRowIndex = 1 To 5 
     For intColumnIndex = 1 To 5 
      Worksheets(intDimIndex).Cells(intRowIndex, Chr(64 + intColumnIndex)).Value = Sheets(intDimIndex).Cells(intRowIndex, Chr(intColumnIndex + 64)).Value = _ 
      Sheets(intDimIndex).Name & ":$" & Chr(intColumnIndex + 64) & "$" _ 
      & Str(intRowIndex) 
     Next intColumnIndex 
    Next intRowIndex 
Next intDimIndex 

しかしボックスはちょうどあなたのコードを削減する "FALSE" として

+1

'シート(intDimIndex).Cells(intRowIndex、chrです(intColumnIndex + 64))。値= '部分は'& 'そこではなく、' = 'を有するべきです。 – Comintern

答えて

0

に必要事項を記入to pseudo valuesは、実際にブール値を割り当てていることを示します。

Cell1.Value = Cell2.Value = Cell3.Value

それはあなたがWorksheet_SelectionChangeでこれを行うだろうと不思議なのです。

名前がわかりやすいのですが、名前が長すぎるとコードの読みやすさが損なわれます。上下左右にスクロールする必要がある場合は、コードをリファクタリングすることを検討してください。

原則として、x、x1、x2 ...を使用して行を反復し、y、y1、y2 ...を使用して列を反復処理します。私はそれについて一貫しているので、これらは非常に説明的な名前です。私がxとx1を使用するのを見るたびに、私は2組の行を繰り返しています。最初のループは変数xで、2番目のループはx1です。

ここでは、3つの変数を宣言します。intRowIndexはintColumnIndexバリアント型で、intDimIndexは整数です。

Dim intRowIndex, intColumnIndex, intDimIndex As Integer

あなたは変数を宣言すると、それがAsによって従わされていないとデータ型は、その変数がバリアントです。すべての行変数を長く宣言する方がよいでしょう。 Integerがやっているにもかかわらず、私は長い間列変数を宣言します。

Dim x as long, y as long, w As Integer

'Change Colors/Fonts and Resize 
Range("A1:A" & Rows.Count).Columns.AutoFit 
Columns("A:E").AutoFit 


For w = 1 To 3 
    For x = 1 To 5 
     For y = 1 To 5 
      With Worksheets(w) 
       .Cells(x, y).Value = .Cells(x, y).Address(RowAbsolute:=True, ColumnAbsolute:=True) 
      End With 
     Next y 
    Next x 
Next w