对于循环VBA行为不当,而不是我想要的方式

我在这里做的是将存储为文本的string转换为整数。 不幸的是,只是将格式从常规改为数值并不能解决问题,而我之前做的是手动查找/replace每个数字(即使用excel查找replace为0,1,2,3等)

我在下面的代码的问题是,它只会取代一些数字,但不是全部。 我甚至无法弄清楚它所做的一套模式。 据我可以告诉for语句应该从0到9的每个“数字”值运行它的权利? 那么为什么不取代所有的string呢?

Dim Digit As Integer Dim ReplacementRange As Range Set ReplacementRange = Range("Table1[AR]")` Digit = 0 For Digit = 0 To Digit = 9 ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Digit = Digit + 1 Next 

要将范围内存储为范围内的数字快速转换为其数值,可以简单地将值放入范围内,如下所示:

ReplacementRange.value = ReplacementRange.value


编辑:我有时间,所以我想我会添加什么是你在旁边做什么是一个简单的解决scheme是一个复杂的替代:

for循环的结构是错误的。 例如,正确的最小语法是[variable] = [startValue] to [endValue]For x = 0 to 1

For Digit = 0 To Digit = 9结束被评估相当于For Digit = 0 to 0 (因为您以前将数字设置为0.这意味着循环只运行一个数值Digit = 0的值,你也增加数字在循环内,这是更合理的处理增加的步骤。在这种情况下,你要打每个数字,所以你不应该增加值。

要修复您的循环,您需要执行以下操作:

 For Digit = 0 To 9 ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Next 

但是…仍然不能解决存储为文本的数字问题。