Установить часть строки в процентах - PullRequest
0 голосов
/ 11 октября 2019

Попытка получить msgbox, чтобы показать диапазон ячеек, которые пользователь может видеть и использовать. Это должен быть список из двух столбцов в другом листе в моей книге. Получил большую часть кода, но я получаю вывод, который не могу понять.

в коде, который я хочу, чтобы NCol отображался в процентах, когда msgbox запрашивает.

Первая идея состояла в том, чтобы установить каждую ячейку в этой переменной на Format(NCol,"0.00%") после For NCol = ....

Вторая идея была внутри Str & Rng.Cells...Format(Ncol.., которая явно не пошла как хотелось.

Любые указатели в правильном направлении очень ценятся. На рисунке ниже показан результат в msgbox. Вход

Input and wanted output look

результат

Outcome to msgbox

Sub ShowTopCat()
    Dim Rng As Range
    Dim ACell As Range
    Dim Str As String
    Dim ARow As Long
    Dim NCol As Long
    Dim art As Worksheet
    Set art = Worksheets("Sheet1")
    On Error Resume Next
    Set Rng = art.Range("x2:y101")
    If Rng Is Nothing Then Exit Sub
    On Error Resume Next
    For ARow = 1 To Rng.Rows.Count
        For NCol = 1 To Rng.Columns.Count
                Str = Str & Rng.Cells(ARow, NCol).Value & vbTab
        Next
        Str = Str & vbCrLf
    Next
    MsgBox Str, vbInformation, "You top cats"
End Sub

1 Ответ

2 голосов
/ 11 октября 2019

Зачем использовать две петли, когда ваш диапазон фиксирован?

Sub ShowTopCat()
    Dim art As Worksheet
    Dim Rng As Range
    Dim Str As String
    Dim ARow As Long

    Set art = Worksheets("Sheet1")

    On Error Resume Next
    Set Rng = art.Range("x2:y101")
    If Rng Is Nothing Then Exit Sub
    On Error Resume Next

    For ARow = 1 To Rng.Rows.Count
        With Rng.Cells(ARow, 1)
            If .Value2 <> vbNullString Then
                Str = Str & .Value2 & vbTab & Format(.Offset(0, 1).Value2, "0" & Application.DecimalSeparator & "00%")
                Str = Str & vbCrLf
            End If
        End With
    Next ARow
    MsgBox Str, vbInformation, "You top cats"
End Sub
...