Если заявление в For-Loop

не является стандартным заголовком. Чаще всего это относится к заголовку для BGI API Borland для DOS и в лучшем случае устаревает.

Однако это очень просто; существует реализация Win32 интерфейса BGI под названием WinBGIm . Он реализован с использованием вызовов Win32 GDI - графического интерфейса Windows самого низкого уровня. Поскольку это предусмотрено в качестве исходного кода, возможно, это простой способ понять, как работает GDI.

WinBGIm, однако, ни в коем случае не является кросс-платформенным. Если все, что вам нужно, это простые графические примитивы, большинство библиотек GUI более высокого уровня, таких как wxWidgets и Qt, тоже это поддерживает. Существуют более простые библиотеки, предлагаемые в возможных дублирующих ответах, упомянутых в комментариях.

0
задан Paige Hilliard 15 January 2019 в 18:51
поделиться

3 ответа

Надеюсь, это поможет.

Следующее должно работать для вас:

    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
0
ответ дан IAmNerd2000 15 January 2019 в 18:51
поделиться

Я не уверен, почему вы использовали бы здесь матрицу, если вы просто просматриваете один столбец.

Приведенный ниже код проверит через столбец (я могу сделать его динамическим диапазоном, если вы того пожелаете) и остановится на первой ячейке со значением «Нет требований» - он затем выведет адрес ячейки со значением и Нет "и выходит из цикла.

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
0
ответ дан visualnotsobasic 15 January 2019 в 18:51
поделиться

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
0
ответ дан Tate Garringer 15 January 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: