Vba 反转字符串中的单个单词

Vba 反转字符串中的单个单词,vba,Vba,我得到了一个相当具有挑战性的任务,要“介绍”我们(作为一门数学课)VBA。别问我为什么 几个小时前我问过这个问题,但我没有完全描述作业中的(奇怪的)限制 他们希望我们编写代码,逐字颠倒“VBA是惊人的”这句话。因此,结果必须是:“ABV si gnizama”。现在是挑战的部分只允许使用Len和Mid功能 “VBA是令人惊奇的”这句话后面可能会有一个空格,使它更容易 我在想一个while循环,在这里我可以找到句子中的第一个单词: Do While Mid(Sentence, i, 1) <

我得到了一个相当具有挑战性的任务,要“介绍”我们(作为一门数学课)VBA。别问我为什么

几个小时前我问过这个问题,但我没有完全描述作业中的(奇怪的)限制

他们希望我们编写代码,逐字颠倒“VBA是惊人的”这句话。因此,结果必须是:“ABV si gnizama”。现在是挑战的部分只允许使用Len和Mid功能

“VBA是令人惊奇的”这句话后面可能会有一个空格,使它更容易

我在想一个while循环,在这里我可以找到句子中的第一个单词:

Do While Mid(Sentence, i, 1) <> " "
 i = i+1
Loop
Do While Mid(句子,i,1)”
i=i+1
环
这应该给出第一个空格的位置,从而给出第一个单词的长度(i-1)

然后我可能会使用一个嵌套的for循环来指定Mid(句子,x,1)=Mid(句子,z,1),其中x从1到I-1,z从I-1到1,但我对VBA来说太陌生了,不知道怎么做


我有一个代码,上面写着:“gnizama si ABV”,但这不是它的意思。

如果你必须只使用
Len
Mid
,那么这就可以了

Sub ReverseStringByWord()
    Dim i As Long
    Dim newstr As String
    Dim wordbreak As Long
    Dim mystr As String
    mystr = "VBA is amazing"
    
    wordbreak = 1

    For i = 1 To Len(mystr)
        If Mid(mystr, i, 1) = " " Then
            wordbreak = i
            newstr = newstr & Mid(mystr, i, 1)
        Else
            If wordbreak > 1 Then
                newstr = Mid(newstr, 1, wordbreak) & Mid(mystr, i, 1) & Mid(newstr, wordbreak + 1, Len(newstr))
            Else
                newstr = Mid(mystr, i, 1) & newstr
            End If
        End If
    Next i
    Debug.Print mystr, newstr
End Sub

你能把这个问题完全颠倒过来吗?这并不是一个挑战性的任务。看看你的另一个问题也一样,似乎有一个答案只使用Mid和Len。这不符合你的要求吗?这看起来很容易理解。当我从老师那里得到“答案”时,我会回答我自己的问题。