2016-09-29 5 views
1

Я пытаюсь получить каждый вызов в A1: E5, чтобы самостоятельно идентифицировать себя среди 3 листов. Таким образом, каждый перечислит от, как так (примеры :) Лист1: $ A $ 3 Лист1: $ A $ 4 Sheet12: $ B $ 2VBA Excel, Cell Self Identification

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

Сокращение кода к псевдо значениям показывает, что вы фактически присваиваете логическое значение.

Cell1.Value = Cell2.Value = Cell3.Value

Это странно, что вы могли бы сделать это в Worksheet_SelectionChange.

Хорошо иметь описательные имена, однако, если имена слишком длинные, это отнимает от читаемости код. Если вам нужно прокручивать вверх и вниз или справа налево, вам может потребоваться рефакторинг вашего кода.

Как правило, я использую x, x1, x2 ... для итерации по строкам и y, y1, y2 ... для итерации по столбцам. Потому что я согласен с этим, это очень описательные имена. Всякий раз, когда вы видите, что я использую x и x1, я повторяю два набора строк. Первый цикл является переменной x, а второй - x1.

Здесь вы объявляете три переменные intRowIndex - это тип варианта intColumnIndex, а intDimIndex - это Integer.

Dim intRowIndex, intColumnIndex, intDimIndex As Integer

Когда вы объявляете переменную и не следуют по As и DataType то, что переменная является вариантом. Вам будет лучше объявить все переменные строки длинными. Я объявляю переменную столбца так долго, даже если бы 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