从VBA格式获取货币

时间:2018-07-10 08:08:39

标签: vba excel-vba

我们现在面临一个小问题。 我们想从一个单元格中获取货币并将其写在右侧的单元格中。 到目前为止,我们得到的代码如下:

Public Sub GETWährung()
Dim i As Integer
For i = 6 To 9
Dim w As String
w = Right(Cells(i, "I"), 3)
Cells(i, "I").Offset(0, 1).Value = w
Next i
End Sub

问题是,单元格中不包含货币,这是一种自定义格式。 例如: enter image description here 在左侧您可以看到格式化的单元格,在右侧则显示输出。 感谢您的帮助。 非常感谢。

3 个答案:

答案 0 :(得分:2)

在您的代码中,/** * Resize a view. */ public static void resize( View view, float fromX, float toX, float fromY, float toY, float pivotX, float pivotY, int duration) { resize( view, fromX, toX, fromY, toY, pivotX, pivotY, duration, null, null, null); } /** * Resize a view with handlers. * * @param view A view to resize. * @param fromX X scale at start. * @param toX X scale at end. * @param fromY Y scale at start. * @param toY Y scale at end. * @param pivotX Rotate angle at start. * @param pivotY Rotate angle at end. * @param duration Animation duration. * @param start Actions on animation start. Otherwise NULL. * @param repeat Actions on animation repeat. Otherwise NULL. * @param end Actions on animation end. Otherwise NULL. */ public static void resize( View view, float fromX, float toX, float fromY, float toY, float pivotX, float pivotY, int duration, Callable start, Callable repeat, Callable end) { Animation animation; animation = new ScaleAnimation( fromX, toX, fromY, toY, Animation.RELATIVE_TO_SELF, pivotX, Animation.RELATIVE_TO_SELF, pivotY); animation.setDuration( duration); animation.setInterpolator( new AccelerateDecelerateInterpolator()); animation.setFillAfter(true); view.startAnimation( animation); animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { if (start != null) { try { start.call(); } catch (Exception e) { e.printStackTrace(); } } } @Override public void onAnimationEnd(Animation animation) { if (end != null) { try { end.call(); } catch (Exception e) { e.printStackTrace(); } } } @Override public void onAnimationRepeat( Animation animation) { if (repeat != null) { try { repeat.call(); } catch (Exception e) { e.printStackTrace(); } } } }); } 将获得 value 的最后三个字符。货币代码不是值的一部分,而是表示形式的一部分。如果要获取显示在单元格中的文本,可以使用w之类的内容-但是,我不建议这样做。

如果只想使用相同的格式,则可以使用

cells(i, "I").text

答案 1 :(得分:1)

尝试更改这些单元格的格式,添加此行(格式仅是示例):

Cells(i, "I").Offset(0, 1).NumberFormat = "$#,##0.00"

或在循环之外:

Range("E:F").NumberFormat = "$#,##0.00"

答案 2 :(得分:0)

另一种实现此目的的方法是使用“样式”方法,该方法将根据您的“区域设置”将单元格设置为“货币”,如下所示:

Cells(i, "I").Offset(0, 1).Style = "Currency"