如果使用excel 2010 vba选中复选框,则将单元格的内容添加到文本文件

时间:2016-08-20 13:55:05

标签: vba excel-vba excel-2010 excel

我有以下 Excel 2010 VBA,它分为两部分。第一部分检查工作表上的CheckBox是否被选中,如果它然后将指定单元格的值添加到下面部分中的 sample_descriptor.txt 。目前我正在接受

  

下标超出范围错误

我不确定这是否是完成此任务的最佳方式。谢谢 :)。 comment1的值为F9,comment2为F10,comment3为F11,comment4为F12

VBA

' ADD COMMENT IF ANY '
If CheckBox17.Value = True Then
    Worksheets("Sheet1").Range("F9") = ActiveSheet.Range("F9").Value
Else
    Worksheets("Sheet1").Range("F9") = "No Issues"
End If

If CheckBox17.Value = True Then
    Worksheets("Sheet1").Range("F10") = ActiveSheet.Range("10").Value
Else
    Worksheets("Sheet1").Range("F10") = "No Issues"
End If

If CheckBox17.Value = True Then
     Worksheets("Sheet1").Range("F11") = ActiveSheet.Range("F11").Value
Else
    Worksheets("Sheet1").Range("F11") = "No Issues"
End If

If CheckBox17.Value = True Then
    Worksheets("Sheet1").Range("F12") = ActiveSheet.Range("F12").Value
Else
    Worksheets("Sheet1").Range("F12") = "No Issues"
End If

Unload Me

'WRITE TO SAMPLE DESCRIPTOR.txt '
    Open MyDirectory & "sample_descriptor.txt" For Output As #1
    Print #1, "Experiment Sample" & vbTab & "Control Sample" & vbTab & "Display Name" & vbTab & "Gender" & vbTab & "Control Gender" & vbTab & "Spikein" & vbTab & "Location" & vbTab & "Barcode" & vbTab & "Medical Record" & vbTab & "Date of Birth" & vbTab & "Order Date"
    Print #1, "2571683" & MyBarCode & "_532Block1.txt" & vbTab & "2571683" & MyBarCode & "_635Block1.txt" & vbTab & ActiveSheet.Range("B8").Value & " " & ActiveSheet.Range("B9").Value & vbTab & ActiveSheet.Range("B10").Value & vbTab & ActiveSheet.Range("B5").Value & vbTab & Split(ActiveSheet.Range("B11").Value, " [")(0) & vbTab & ActiveSheet.Range("B12").Value & vbTab & "2571683" & MyBarCode & vbTab & ActiveSheet.Range("C200").Value & vbTab & ActiveSheet.Range("D200").Value & vbTab & ActiveSheet.Range("E200").Value & IIf(Sheet.CheckBox17, vbTab & ActiveSheet.Range("F9").Value, "")
    Print #1, "2571683" & MyBarCode & "_532Block2.txt" & vbTab & "2571683" & MyBarCode & "_635Block2.txt" & vbTab & ActiveSheet.Range("C8").Value & " " & ActiveSheet.Range("C9").Value & vbTab & ActiveSheet.Range("C10").Value & vbTab & ActiveSheet.Range("C5").Value & vbTab & Split(ActiveSheet.Range("C11").Value, " [")(0) & vbTab & ActiveSheet.Range("C12").Value & vbTab & "2571683" & MyBarCode & vbTab & ActiveSheet.Range("C201").Value & vbTab & ActiveSheet.Range("D201").Value & vbTab & ActiveSheet.Range("E201").Value & IIf(Sheet.CheckBox17, vbTab & ActiveSheet.Range("F10").Value, "")
    Print #1, "2571683" & MyBarCode & "_532Block3.txt" & vbTab & "2571683" & MyBarCode & "_635Block3.txt" & vbTab & ActiveSheet.Range("D8").Value & " " & ActiveSheet.Range("D9").Value & vbTab & ActiveSheet.Range("D10").Value & vbTab & ActiveSheet.Range("D5").Value & vbTab & Split(ActiveSheet.Range("D11").Value, " [")(0) & vbTab & ActiveSheet.Range("D12").Value & vbTab & "2571683" & MyBarCode & vbTab & ActiveSheet.Range("C202").Value & vbTab & ActiveSheet.Range("D202").Value & vbTab & ActiveSheet.Range("E202").Value & IIf(Sheet1.CheckBox17, vbTab & ActiveSheet.Range("F11").Value, "")
    Print #1, "2571683" & MyBarCode & "_532Block4.txt" & vbTab & "2571683" & MyBarCode & "_635Block4.txt" & vbTab & ActiveSheet.Range("E8").Value & " " & ActiveSheet.Range("E9").Value & vbTab & ActiveSheet.Range("E10").Value & vbTab & ActiveSheet.Range("E5").Value & vbTab & Split(ActiveSheet.Range("E11").Value, " [")(0) & vbTab & ActiveSheet.Range("E12").Value & vbTab & "2571683" & MyBarCode & vbTab & ActiveSheet.Range("C203").Value & vbTab & ActiveSheet.Range("D203").Value & vbTab & ActiveSheet.Range("E203").Value & IIf(Sheet1.CheckBox17, vbTab & ActiveSheet.Range("F12").Value, "")
    Close #1

文件格式

x               
x   1   2   3   4   
x   11  22  33  44  
x   --- --- --- --- 
x   Male    Male    Female  Male    
x   --- --- --- --- 
x   1   2   3   4                       Please check the box to add comment
x   1111    2222    3333    4444        (checkbox17)
x   xxx,xxx xxx,xxx xxx,xxx xxx,xxx     comment1
x   Male    Male    Female  Male        comment2
x   xx  xx  xx  xx                      comment3
x   x   x   x   x                       comment4

1 个答案:

答案 0 :(得分:1)

你必须改变:

ActiveSheet.Range("10").Value

成:

ActiveSheet.Range("F10").Value

但您可以将代码缩短为:

If CheckBox17 Then
    Worksheets("Sheet1").Range("F9:F12").value = ActiveSheet.Range("F9:F12").value
Else
    Worksheets("Sheet1").Range("F9:F12") = "No Issues"
End If