【问题标题】:Randomly select a line from text file without selecting the same line twice VBA从文本文件中随机选择一行而不选择同一行两次 VBA
【发布时间】:2013-11-05 18:44:53
【问题描述】:

我有一个包含问题的文本文件,每行一个。我希望 powerpoint 从文件中随机选择一行并将该行放入标签中。我还想确保每行只使用一次。如果没有简单的方法来解决这个问题,也许可以删除从文本文件中选择的行。我在网上找到了一些代码,但它不会做我想要的(不是两次使用同一行)。

【问题讨论】:

  • 请贴出代码并准确指出它做错了什么。

标签: vba random text powerpoint


【解决方案1】:

试试这个

Sub do_file()
  Dim myArray

  Open [YOUR TEXT FILE HERE] For Input As #1
    fileinfo = Input(LOF(1), #1)
  Close #1
  myArray = Split(fileinfo, vbCrLf)

  myArray = ShuffleArray(myArray)

  For i = 0 To UBound(myArray)
    [YOUR LABEL HERE] = myArray(i)
  Next i

End Sub

Function ShuffleArray(OrigArray As Variant) As Variant
  Dim RandNum As Long
  Dim Holder As Variant
  Dim ReturnArray() As Variant

  ReDim ReturnArray(LBound(OrigArray) To UBound(OrigArray))
  For i = LBound(OrigArray) To UBound(OrigArray)
    ReturnArray(i) = OrigArray(i)
  Next i
  For i = LBound(OrigArray) To UBound(OrigArray)
    RandNum = Int((UBound(OrigArray) - LBound(OrigArray)) * Rnd + LBound(OrigArray))
    If i <> RandNum Then
        Holder = ReturnArray(i)
        ReturnArray(i) = ReturnArray(RandNum)
        ReturnArray(RandNum) = Holder
    End If
  Next i
  ShuffleArray = ReturnArray

End Function

这将读取文件并将每一行放入一个数组中,然后将随机播放该数组。然后它会循环遍历洗牌后的数组,您需要在其中添加标签以输出问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多