2016-09-29 53 views
1

我试图让A1:E5中的每个调用都能在3个工作表中自我识别它们。所以每次都会列出断为左右(例子:)工作表Sheet1:$ A $ 3 Sheet1中:$ A $ 4 Sheet12:$ B $ 2VBA Excel,单元格自我识别

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是一个整数。

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