楼主 hlxz |
题目要求:用vba,在a1:a99写入,“我爱你”,循环 就是A1=我,a2=爱,a3=你,a4=我,a5=爱,a6=你,,,,这样循环- Sub 方法1()
- T = Timer
- For i = 1 To 99
- y = i Mod 3
- Select Case y
- Case Is = 1
- Range("A" & i) = "我"
- Case Is = 2
- Range("A" & i) = "爱"
- Case Is = 0
- Range("A" & i) = "你"
- End Select
- Next
- Range("A100") = Timer - T '0.109375秒
- End Sub
- Sub 方法2()
- T = Timer
- For i = 1 To 99 Step 3
- Range("A" & i) = "我"
- Range("A" & i + 1) = "爱"
- Range("A" & i + 2) = "你"
- Next
- Range("A100") = Timer - T '0.125秒
- End Sub
- Sub 方法3()
- T = Timer
- HL = Array("我", "爱", "你")
- For i = 1 To 99 Step 3
- Range("A" & i).Resize(3, 1) = WorksheetFunction.Transpose(HL)
- Next
- Range("A100") = Timer - T '0.03125秒
- End Sub
- Sub 方法4()
- T = Timer
- HL = WorksheetFunction.Rept("我爱你", 33)
- For i = 1 To 99
- Range("A" & i) = Mid(HL, i, 1)
- Next
- Range("A100") = Timer - T '0.109375秒
- End Sub
- Sub 方法5()
- T = Timer
- HL = WorksheetFunction.Rept("我,爱,你,", 1000)
- xm = Split(HL, ",")
- r = UBound(xm)
- Range("a1:a" & r + 1) = WorksheetFunction.Transpose(xm)
- Range("A100") = Timer - T '0.015625秒0.234375
- End Sub
- Sub 方法6()
- '杰堂远程教室(327712892)提供
- xx = Timer
- For i = 1 To 99
- Select Case i Mod 3
- Case 1
- ad1 = ad1 & ",a" & i
- Case 2
- ad2 = ad2 & ",a" & i
- Case 0
- ad3 = ad3 & ",a" & i
- End Select
- Next i
- Sheet1.Range(Right(ad1, Len(ad1) - 1)) = "我"
- Sheet1.Range(Right(ad2, Len(ad2) - 1)) = "爱"
- Sheet1.Range(Right(ad3, Len(ad3) - 1)) = "你"
- Sheet2.Range("b1") = Timer - xx '0.015625秒
- End Sub
|
2楼 hlxz |
- Sub 方法7()
- '深山老猫(38677446)
- Dim Ts As Double
- Ts = Timer
- Dim myarrange(1 To 99) As String
- For i = 1 To 99
- myarrange(i) = Mid("你我爱", (i Mod 3) + 1, 1)
- Next i
- Range("A1:A99") = WorksheetFunction.Transpose(myarrange)
- Range("B1") = Timer - Ts
- End Sub
- Sub 方法8()
- '飞翔(65921751) 20:11:38
- 最简单最快的写法
- Dim a(1 To 99, 1 To 1)
- Dim b, n As Byte
- Dim t As Double
- t = Timer
- b = Array("我", "爱", "你")
- For i = 1 To 99
- n = IIf(n > 2, 0, n)
- a(i, 1) = b(n)
- n = n + 1
- Next
- [a1:a99] = a
- MsgBox Format(Timer - t, "0.00") '0.016秒
- End Sub
- Sub 方法9()
- Dim t As Single
- t = Timer
- [A1] = "我"
- [A100] = "我"
- [A2] = "爱"
- [A3] = "你"
- Range("A1:A3").Copy Destination:=Range("A4:A99")
- MsgBox Timer - t & "毫秒" '0.015625毫秒
- End Sub
- Sub 方法10()
- Dim c As Range
- Dim t As Double
- Dim arr()
- t = Timer
- arr = Array("我", "爱", "你")
- Set c = Range("A1:A3")
- With c
- .Value = Application.WorksheetFunction.Transpose(arr)
- .AutoFill Destination:=Range("A1:A99"), Type:=xlFillDefault
- End With
- Range("A100") = Format(Timer - t, "0.0000")
- End Sub
- Sub 方法11()
- Dim c As Range
- Dim t As Double
- Dim arr()
- t = Timer
- arr = Array("我", "爱", "你")
- Set c = Range("A1:A3")
- With c
- .Value = Application.WorksheetFunction.Transpose(arr)
- .AutoFill Destination:=Range("A1:A99"), Type:=xlFillDefault
- End With
- t = Timer - t
- Debug.Print t
- End Sub
|
3楼 hlxz |
hom398
- Sub 方法12()
- Dim arrLove(1 To 99, 1 To 1) As String
- Dim i As Byte
- Dim vTime
- Dim bytCount As Byte
- Application.ScreenUpdating = False
- vTime = Timer
- With Sheet1
- For i = 1 To 99
- bytCount = i Mod 3 + 1
- arrLove(i, 1) = Choose(bytCount, "你", "我", "爱")
- Next
- .Range("A1:A99") = arrLove
- End With
- MsgBox Timer - vTime
- Application.ScreenUpdating = True
- End Sub
hom398
- Sub 方法13()
- Dim arrLove As Variant
- Dim vTime
- Application.ScreenUpdating = False
- vTime = Timer
- With Sheet1
- arrLove = Array("我", "爱", "你")
- .Range("A1:A3") = Application.Transpose(arrLove)
- .Range("A1:A3").Copy .Range("A4:A99")
- End With
- MsgBox Timer - vTime
- Application.ScreenUpdating = True
- End Sub
老顽童
- Sub 方法14()
- t = Timer
- Range("A1") = "我"
- Range("A2") = "爱"
- Range("A3") = "你"
- a = Range("A1:A3")
- For i = 4 To 99 Step 3
- b = Range("A65536").End(xlUp).Row + 1
- Range(Cells(b, 1), Cells(b + 2, 1)) = a
- Next i
- Erase a
- Range("B1") = Timer - t & "毫秒" '.015625毫秒或.03125毫秒
- End Sub
|
4楼 willin2000 |
方法1:
- Sub 我爱你()
- [a1:a3] = Application.Transpose([{"我", "爱", "你"}])
- [a1:a3].Copy [a4:a99]
- End Sub
方法2:
- Sub 我爱你()
- [a1:a99] = Application.Transpose(Split(Left(WorksheetFunction.Rept("我,爱,你,", 40), 199), ","))
- End Sub
或
- Sub 我爱你()
- [a1:a99] = Application.Transpose(Split(WorksheetFunction.Rept("我,爱,你,", 40), ","))
- End Sub
|
5楼 洋五月 |
我一种也不会,有得慢慢学了
|
6楼 bobij |
太舒服了,我真的爱上你了
|
7楼 ldy |
狗尾续貂
![](linkfiles/call.gif) - Sub 我爱你1()
- t = Timer
- [a1:a3] = [{"我"; "爱"; "你"}]
- [a1:a3].Copy [a1:a99]
- Debug.Print Timer - t ' .015625 or 0
- End Sub
- Sub 我爱你2()
- t = Timer
- [a1:a51] = Evaluate("{" & Application.Rept("""我"";""爱"";""你"";", 17) & "0}")
- [a52:a99] = [a1:a51].Value
- Debug.Print Timer - t '.03125 or .015625
- End Sub
- Sub 我爱你3()
- ' 需要引用
- ' C:\windows\system32\FM20.DLL
- ' Microsoft Forms 2.0 Object Library
- ' 要是实在找不到,插入一个用户窗体就有了
- t = Timer
- With New DataObject
- .SetText Application.Rept("我" & vbLf & "爱" & vbLf & "你" & vbLf, 33)
- .PutInClipboard
- End With
- [a1].PasteSpecial
- Debug.Print Timer - t ' .0625 or .015625
- End Sub
|
8楼 冰风萧萧 |
不会
|
9楼 水星钓鱼 |
友情参与,学习来了
![](linkfiles/lol.gif) - Sub a()
- Dim i As Date
- i = Timer
- Range("a1:a3") = Application.WorksheetFunction.Transpose(Array("我", "爱", "你"))
- Range("a1:a3").Copy Range("a1:a99")
- MsgBox Timer - i
- End Sub
- Sub b()
- Dim i As Date
- i = Timer
- Range("a1:a3") =
|
10楼 eve_saunter |
从来没想过有这么多循环法的说。。。 |
11楼 zldccmx |
Ldy说“狗尾续貂”
那老朽来个不算是“画龙点晴”的代码吧 :) ^_^
'撰写:老朽 '日期:2010-3-30 上午 08:46:17 Sub 我爱你_老朽() t = Timer [a1:a99] = "=IF(MOD(ROW(), 3 )=1,""我"",IF(MOD(ROW(),3)=2,""爱"",""你""))" [a1:a99] = [a1:a99].Value Debug.Print Timer - t '0 or 1.367188E-02 or .015625
End Sub |
12楼 zldccmx |
老朽再来个不算是“画龙点晴”的代码吧 :) ^_^
'撰写:老朽 '日期:2010-3-30 上午 08:48:18 Sub 我爱你_老朽2() t = Timer [A1:A99] = "=CHOOSE(MOD(ROW(),3)+1,""你"",""我"",""爱"")" [A1:A99] = [A1:A99].Value Debug.Print Timer - t '1.367188E-02 or .015625 or 0 End Sub |
13楼 zldccmx |
Sub我爱你_老朽3() t = Timer Set AWF = Application.WorksheetFunction St$ = AWF.Rept("我,爱,你,", 33) [A1:A99] = AWF.Transpose(Split(St, ",")) Debug.Print Timer - t '1.367188E-02 or .015625 or 0 End Sub |
14楼 zldccmx |
13楼也可以这样
- Sub 我爱你_老朽3()
- t = Timer
- Set AWF = Application.WorksheetFunction
- St$ = AWF.Rept("我 爱 你 ", 33)
- [A1:A99] = AWF.Transpose(Split(St))
- Debug.Print Timer - t ' 0
- End Sub
|
15楼 远方 |
有意思 谢谢分享 |
16楼 wnianzhong |
学习了,谢谢! |
17楼 hanter007 |
没想到有这么多精彩的方法.学习了. |
18楼 wenshui2006 |
太强了,,,,这么多的写法,,,, |
19楼 sam.tan |
学会了,我也爱你们! |
20楼 rzz8118 |
看的眼花缭乱,要是能加代码注释就更好了 |
21楼 gowowo |
第一次发帖, 来个快点的
- Sub 方法()
- T = Timer
- Dim A(1 To 99, 0) As String
- A(1, 0) = "我": A(2, 0) = "爱": A(3, 0) = "你"
- For i = 1 To 3
- For j = i To 99 Step 3
- A(j, 0) = A(i, 0)
- Next
- Next
- Range("A1:A99") = A
- Range("A100") = (Timer - T) '0.0000秒 太快了
- End Sub
|
22楼 yncxxmj |
看了有点头晕了,有这么多写法。 |
23楼 大黄蜂 |
gowowo,你的方法最牛,以后要常发帖,期待! |
24楼 wangqilong1980 |
收藏慢慢学习。越学习,越发现自已的无知! |
25楼 hd030502 |
下来学习 |
26楼 zhangguangku071 |
高手,学习中 |
27楼 wqfzqgk |
最普通的写法: Range("a1,a4,a7...") = "我" Range("a2,a5,a8...") = "爱" Range("a3,a6,a9...") = "你"
|
28楼 wqfzqgk |
a = Array("我", "爱", "你") For i = 1 To 99 Step 3 addr = addr & ",a" & i Next Range(Right(addr, Len(addr) - 1)) = a(0) Range(Right(addr, Len(addr) - 1)).Offset(1, 0) = a(1) Range(Right(addr, Len(addr) - 1)).Offset(2, 0) = a(2) |
29楼 lgb6699 |
太漂亮了,每一种写法都是一种心得,活学才能活用. |
30楼 ljh29206 |
Sub 方法2() For i = 1 To 99 Step 3 Cells(i, 1) = "我" Cells(i + 1, 1) = "爱" Cells(i + 2, 1) = "你" Next End Sub |
31楼 bensonlei |
很好的帖子,学会了怎样去计算时间! |