не является стандартным заголовком. Чаще всего это относится к заголовку для BGI API Borland для DOS и в лучшем случае устаревает.
Однако это очень просто; существует реализация Win32 интерфейса BGI под названием WinBGIm . Он реализован с использованием вызовов Win32 GDI - графического интерфейса Windows самого низкого уровня. Поскольку это предусмотрено в качестве исходного кода, возможно, это простой способ понять, как работает GDI.
WinBGIm, однако, ни в коем случае не является кросс-платформенным. Если все, что вам нужно, это простые графические примитивы, большинство библиотек GUI более высокого уровня, таких как wxWidgets и Qt, тоже это поддерживает. Существуют более простые библиотеки, предлагаемые в возможных дублирующих ответах, упомянутых в комментариях.
Надеюсь, это поможет.
Следующее должно работать для вас:
Sub RunIt()
' A, E, 1, 5
PleaseWork 1, 5, 1, 5
End Sub
Sub PleaseWork(intFromCol As Integer, intToCol As Integer, intFromRow As Integer, _
intToRow As Integer)
Dim intI As Integer
Dim intJ As Integer
Dim blnFoundNo As Boolean
Dim strOut As String
strOut = "Yes"
blnFoundNo = False
For intI = intFromCol To intToCol
For intJ = intFromRow To intToRow
' Row , Col
With Worksheets("Calculations").Cells(intJ, intI)
If LCase(Trim(.Value)) = "no" Then
strOut = Replace(Cstr(.Address), "$", "") & " = No"
blnFoundNo = True
Exit For
End If
End With
Next intJ
If blnFoundNo Then Exit For
Next intI
Worksheets("Calculations").Range("H33").Value = strOut
End Sub
Я не уверен, почему вы использовали бы здесь матрицу, если вы просто просматриваете один столбец.
Приведенный ниже код проверит через столбец (я могу сделать его динамическим диапазоном, если вы того пожелаете) и остановится на первой ячейке со значением «Нет требований» - он затем выведет адрес ячейки со значением и Нет "и выходит из цикла.
Sub RandomCol()
For Each cell In Worksheets("Calculations").Range("A1:A50")
If cell.Value = "Yes" Or cell.Value = "No Requirement" Then
ElseIf cell.Value = "No" Then
Range("H33").Value = (cell.Address + " " + "No")
Exit For
End If
Next cell
End Sub
Next i
должен находиться за пределами If-End If
, и вам нужно добавить Next j
в ваш цикл For i
, чтобы код даже работал. Кроме того, если j = 8
ваш второй цикл будет выполняться только один раз, и вы можете полностью его исключить.
было бы гораздо проще сказать
For i = 26 To 33
If Worksheets("Calculations").Cells(i, 8) = "Yes" Or Worksheets("Calculations").Cells(i, 8) = "No Requirement" Then
Worksheets("Calculations").Range("H33").Value = "Yes"
Else
Worksheets("Calculations").Range("H33").Value = "No"
End If
Next i