добавить содержимое ячейки в текстовый файл, если флажок установлен с помощью Excel 2010 vba

vba excel-vba excel-2010 excel

153 просмотра

1 ответ

У меня ниже 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
Автор: justaguy Источник Размещён: 08.11.2019 11:23

Ответы (1)


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
Автор: user3598756 Размещён: 20.08.2016 04:30
32x32