刚学了一两天的EXCL VBA
还请各位高手帮忙修改下,
Dim Aarray(9, 9) As Integer
   
    Dim i
    Dim j
    i = 1
    j = i + 1
    For i = 1 To 100
    
    Aarray(Range("Bi").Value, Range("Bj").Value) = Aarray(Range("Bi").Value, Range("Bj").Value) + 1
    Aarray(Range("Bi").Value, Range("Cj").Value) = Aarray(Range("Bi").Value, Range("Cj").Value) + 1
    Aarray(Range("Bi").Value, Range("Dj").Value) = Aarray(Range("Bi").Value, Range("Dj").Value) + 1
    
    Aarray(Range("Ci").Value, Range("Bj").Value) = Aarray(Range("Ci").Value, Range("Bj").Value) + 1
    Aarray(Range("Ci").Value, Range("Cj").Value) = Aarray(Range("Ci").Value, Range("Cj").Value) + 1
    Aarray(Range("Ci").Value, Range("Dj").Value) = Aarray(Range("Ci").Value, Range("Dj").Value) + 1
    
    Aarray(Range("Di").Value, Range("Bj").Value) = Aarray(Range("Di").Value, Range("Bj").Value) + 1
    Aarray(Range("Di").Value, Range("Cj").Value) = Aarray(Range("Di").Value, Range("Cj").Value) + 1
    Aarray(Range("Di").Value, Range("Dj").Value) = Aarray(Range("Di").Value, Range("Dj").Value) + 1
    
     Next
     
    Range("F2").Value = Aarray(0, 0)
    Range("G2").Value = Aarray(1, 0)
    Range("H2").Value = Aarray(2, 0)
    Range("I2").Value = Aarray(3, 0)
    Range("J2").Value = Aarray(4, 0)
    Range("K2").Value = Aarray(5, 0)
    Range("L2").Value = Aarray(6, 0)
    Range("M2").Value = Aarray(7, 0)
    Range("N2").Value = Aarray(8, 0)
    Range("O2").Value = Aarray(9, 0)
    
    Range("F3").Value = Aarray(0, 1)
    Range("G3").Value = Aarray(1, 1)
    Range("H3").Value = Aarray(2, 1)
    Range("I3").Value = Aarray(3, 1)
    Range("J3").Value = Aarray(4, 1)
    Range("K3").Value = Aarray(5, 1)
    Range("L3").Value = Aarray(6, 1)
    Range("M3").Value = Aarray(7, 1)
    Range("N3").Value = Aarray(8, 1)
    Range("O3").Value = Aarray(9, 1)
    
    Range("F4").Value = Aarray(0, 2)
    Range("G4").Value = Aarray(1, 2)
    Range("H4").Value = Aarray(2, 2)
    Range("I4").Value = Aarray(3, 2)
    Range("J4").Value = Aarray(4, 2)
    Range("K4").Value = Aarray(5, 2)
    Range("L4").Value = Aarray(6, 2)
    Range("M4").Value = Aarray(7, 2)
    Range("N4").Value = Aarray(8, 2)
    Range("O4").Value = Aarray(9, 2)
    
    Range("F5").Value = Aarray(0, 3)
    Range("G5").Value = Aarray(1, 3)
    Range("H5").Value = Aarray(2, 3)
    Range("I5").Value = Aarray(3, 3)
    Range("J5").Value = Aarray(4, 3)
    Range("K5").Value = Aarray(5, 3)
    Range("L5").Value = Aarray(6, 3)
    Range("M5").Value = Aarray(7, 3)
    Range("N5").Value = Aarray(8, 3)
    Range("O5").Value = Aarray(9, 3)
    
    Range("F6").Value = Aarray(0, 4)
    Range("G6").Value = Aarray(1, 4)
    Range("H6").Value = Aarray(2, 4)
    Range("I6").Value = Aarray(3, 4)
    Range("J6").Value = Aarray(4, 4)
    Range("K6").Value = Aarray(5, 4)
    Range("L6").Value = Aarray(6, 4)
    Range("M6").Value = Aarray(7, 4)
    Range("N6").Value = Aarray(8, 4)
    Range("O6").Value = Aarray(9, 4)
    
    Range("F7").Value = Aarray(0, 5)
    Range("G7").Value = Aarray(1, 5)
    Range("H7").Value = Aarray(2, 5)
    Range("I7").Value = Aarray(3, 5)
    Range("J7").Value = Aarray(4, 5)
    Range("K7").Value = Aarray(5, 5)
    Range("L7").Value = Aarray(6, 5)
    Range("M7").Value = Aarray(7, 5)
    Range("N7").Value = Aarray(8, 5)
    Range("O7").Value = Aarray(9, 5)
    
    Range("F8").Value = Aarray(0, 6)
    Range("G8").Value = Aarray(1, 6)
    Range("H8").Value = Aarray(2, 6)
    Range("I8").Value = Aarray(3, 6)
    Range("J8").Value = Aarray(4, 6)
    Range("K8").Value = Aarray(5, 6)
    Range("L8").Value = Aarray(6, 6)
    Range("M8").Value = Aarray(7, 6)
    Range("N8").Value = Aarray(8, 6)
    Range("O8").Value = Aarray(9, 6)
    
    Range("F9").Value = Aarray(0, 7)
    Range("G9").Value = Aarray(1, 7)
    Range("H9").Value = Aarray(2, 7)
    Range("I9").Value = Aarray(3, 7)
    Range("J9").Value = Aarray(4, 7)
    Range("K9").Value = Aarray(5, 7)
    Range("L9").Value = Aarray(6, 7)
    Range("M9").Value = Aarray(7, 7)
    Range("N9").Value = Aarray(8, 7)
    Range("O9").Value = Aarray(9, 7)
    
    Range("F10").Value = Aarray(0, 8)
    Range("G10").Value = Aarray(1, 8)
    Range("H10").Value = Aarray(2, 8)
    Range("I10").Value = Aarray(3, 8)
    Range("J10").Value = Aarray(4, 8)
    Range("K10").Value = Aarray(5, 8)
    Range("L10").Value = Aarray(6, 8)
    Range("M10").Value = Aarray(7, 8)
    Range("N10").Value = Aarray(8, 8)
    Range("O10").Value = Aarray(9, 8)
    
    Range("F11").Value = Aarray(0, 9)
    Range("G11").Value = Aarray(1, 9)
    Range("H11").Value = Aarray(2, 9)
    Range("I11").Value = Aarray(3, 9)
    Range("J11").Value = Aarray(4, 9)
    Range("K11").Value = Aarray(5, 9)
    Range("L11").Value = Aarray(6, 9)
    Range("M11").Value = Aarray(7, 9)
    Range("N11").Value = Aarray(8, 9)
    Range("O11").Value = Aarray(9, 9)

解决方案 »

  1.   

    不要用 Range("Bi")...
    用 Cells(i,j)...
      

  2.   

    多谢schlafenhamster的指点
    这程序还又其它的问题,大家帮忙都教教我
      

  3.   

    看不明白
    下面只限于学习Dim ex As Object
    Dim wb As Object
    Dim sh As Object
    Private Sub Command1_Click()
    Set ex = CreateObject("Excel.Application")
    'Set wb = ex.Workbooks.Add
    Set wb = ex.Workbooks.Open("c:\1.xls") '打开你的EXCEL文件
    Set sh = wb.Sheets(1)                  '指定工作表sheets1
      sh.cells(1, 1) = "A"                 '第一行第一列=A
      sh.cells(1, 2) = "B"                  '第一行第二列=B
      sh.cells(2, 1) = "C"                 '第二行第一列=c
      sh.cells(50, 2) = "D"                '第50行第二列=d
      ex.Visible = True
      Set ex = Nothing
      Set wb = Nothing
      Set sh = Nothing
    End Sub
      

  4.   

    看不懂想干什么。
    但是至少Range("Bi")似乎应该写成Range("B" & i),其他类似。
      

  5.   

    用cells(i,j) 来表示Range(**)比较好,
    例如
    Range(B2) 为cells(2,2)这样自己也明白一些。
      

  6.   

    '结构这样定义
    Type per_data
        present As Integer '预先给出的
        is_ok As Boolean
        logical As Integer '逻辑推算当前的值
        total_maybe As Integer
        maybe(1 To 9) As Integer '可能值
        
    End Type
    Type all_test_data
        test_data(1 To 9, 1 To 9) As per_data
    End TypeType maybe_test
        test_time As Integer '尝试完成的数目
        row As Integer  '最小可能值的行
        col As Integer  '最小可能值的列
    End Type
    Const s_all_test_times = 20
    '========定义起始的单元格=====
    'Const begin_row = 4 '简单
    'Const begin_row = 17 '中等
    'Const begin_row = 34 '难
    'Const begin_row = 51 '专家
    Const begin_row = 68 '专家
    Const begin_col = 2Dim All_data(1 To 9, 1 To 9) As per_dataDim test_back_data(1 To s_all_test_times) As all_test_dataDim test_data(1 To s_all_test_times) As maybe_test '最多测试20个单元格
    Dim total_test_time As Integer      '循环的测试次数Dim Logical_check_flag As IntegerDim test_wrong As Boolean '通过模糊自动匹配出错
    Dim need_test As Boolean '需要模糊匹配的级别(2--4)
    Dim goto_pre As Boolean '需要退回前一个猜测
    Sub AUTO_CHECK()
        Dim loop_num As Integer
        loop_num = 0
        INIT '全局变量初始化
        GET_PRESENT '获取已知内容
        '==========确定可以直接判断的值开始==========
        Do
            Do
                Logical_check_flag = 0
                GET_MAYBE
            Loop While (Logical_check_flag)
            '==========确定可以直接判断的值结束==========
            
            '==========检查结果,行,列,9宫格开始==========
            CHECK_RESULT
            '==========检查结果,行,列,9宫格结束==========
            
            If (test_wrong = False) Then '没有任何错误,直接检查空单元格
                CHECK_EMPTY
            Else
                test_wrong = False
                goto_pre = True
                
                '猜测错误处理,
            End If
            
            '==========猜测处理开始==========
            If (test_wrong = False And goto_pre = False And need_test = False) Then
                Exit Sub
            End If
            
            If (need_test = True) Then
                need_test = False
                do_test
            End If
            '==========猜测处理结束==========
            If (goto_pre = True) Then
                goto_pre = False
                PRE_CHECK
            End If
            loop_num = loop_num + 1
        Loop While (loop_num < 200)End Sub
      

  7.   

    太大了,有email的话,给你发一个数独计算的VBA,应该对你有帮助。
      

  8.   

    Aarray(Range("Bi").Value, Range("Bj").Value) 最好改成Aarray(Range(cells(i,2)).Value, Range(cells(j,2)).Value) 
      

  9.   

        Dim Aarray(9, 9) As Integer
        Dim i As Integer
        Dim j As Integer
        For i = 1 To 10
            For j = 1 To 10
                Aarray(i - 1, j - 1) = j + (i - 1) * 10   '横排
                'Aarray(i - 1, j - 1) = i + (j - 1) * 10   '竖排
            Next
        Next
        Range("F2").Resize(UBound(Aarray) + 1, UBound(Aarray, 2) + 1) = Aarray