Мне нужно, чтобы программа читала текстовый файл и копировала элементы с первой буквой в верхнем регистре в один столбец, а элементы со строчными в другой столбец - PullRequest
0 голосов
/ 22 октября 2019
Public Sub uzd3()

Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogOpen)
Dim filename As String

If fd.Show = -1 Then
    filename = fd.SelectedItems(1)
    MsgBox ("The path is: " & filename)
   Open "C:\Users\KlaavsZK\Desktop\uzd3.txt" For Input As #1
Else
    MsgBox ("No file selected")
    Exit Sub
End If

Dim txt As String
Dim i As Integer

i = 0
Do Until EOF(1)
Line Input #1, txt
Cells(1, 1) = "Lielais sakuma burts"
Cells(1, 2) = "mazais sakuma  burts"
If Left(Cells(2, 1).Offset(i, 0), 1) = LCase(Left(Cells(2, 1).Offset(i, 0), 1)) Then
Cells(2, 1).Offset(i, 0) = txt
ElseIf Left(Cells(2, 2).Offset(i, 0), 1) = UCase(Left(Cells(2, 2).Offset(i, 0), 1)) Then
Cells(2, 2).Offset(i, 0) = txt
i = i + 1
End If
Loop
Close #1



End Sub

Копирует элементы в столбцы, но делает это случайным образом не в верхнем и нижнем регистре

1 Ответ

0 голосов
/ 22 октября 2019

Я считаю, что ваша проблема в этом сравнении

 Left(Cells(2, 1).Offset(i, 0), 1) = LCase(Left(Cells(2, 1).Offset(i, 0), 1))   
 Left(Cells(2, 2).Offset(i, 0), 1) = UCase(Left(Cells(2, 2).Offset(i, 0), 1)) 

вы проверяете значение ячейки, но не значение, которое вы читаете из текстового файла

попробуйте это

Public Sub uzd3()

Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogOpen)
Dim filename As String

If fd.Show = -1 Then
    'filename = fd.SelectedItems(1)
    'MsgBox ("The path is: " & filename)
   Open "C:\Users\KlaavsZK\Desktop\uzd3.txt" For Input As #1
Else
    MsgBox ("No file selected")
    Exit Sub
End If

Dim txt As String
Dim i As Integer

Cells(1, 1) = "Lielais sakuma burts"
Cells(1, 2) = "mazais sakuma  burts"

    i = 0
    Do Until EOF(1)
        Line Input #1, txt

        If Left(txt, 1) = LCase(Left(txt, 1)) Then
            Cells(2, 1).Offset(i, 0) = txt
        ElseIf Left(txt, 1) = UCase(Left(txt, 1)) Then
           Cells(2, 2).Offset(i, 0) = txt

        End If
                    i = i + 1
    Loop
Close #1

End Sub

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...