Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


74 / 3841 ページ ←次へ | 前へ→

【80995】Re:エクセル2016ですがクラッシュします
お礼  goushi  - 19/7/4(木) 23:07 -

引用なし
パスワード
   ありがとうございます
とりあえず新しいブックで再確認してみます
・ツリー全体表示

【80994】Re:エクセル2016ですがクラッシュします
発言  γ  - 19/7/4(木) 22:25 -

引用なし
パスワード
   そのコードがクラッシュの原因とは思えないですね。
その他のイベントプロシージャとか動いていませんか?
また、新しいブックで同じことをしても、クラッシュが再現しますか?
そのあたりを検討してみてはどうでしょうか。
・ツリー全体表示

【80993】エクセル2016ですがクラッシュします
質問  goushi  - 19/7/4(木) 18:05 -

引用なし
パスワード
   セルに数式を記入し隣のセルに答えが出るマクロをデータとしていただいたのですが最近答えが出てしばらくするとエクセルがクラッシュするようになりました。マクロ初心者ですのでどこが問題かわかりません。よろしくお願いいたします

Dim NowR As Integer
Dim NowC As Integer
Dim siki

Sub 小計()

 NowR = ActiveCell.Row
 NowC = ActiveCell.Column
 rr = Cells(NowR - 1, 4).Value
 If NowC = 4 And IsEmpty(Cells(NowR - 1, 4)) = False And rr <> "計" Then
  siki = Cells(NowR - 1, 4).Value
  Cells(NowR - 1, 5).Formula = "=ROUND(" & siki & ",2)"
 End If

End Sub
・ツリー全体表示

【80992】Re:数字の表示形式について
発言  マナ  - 19/7/2(火) 22:35 -

引用なし
パスワード
   ▼mikky さん:
>ご回答ありがとうございました。
>Round関数で四捨五入させて、それから表示形式を変えれば良いのですね。

そんな2度手間しなくても
γさんの回答の
表示形式を0".00"
でよいですよ。

表示形式、0 で四捨五入されるので、
その結果に固定の文字列、".00"を付加です。

頭の固いわたしには、思いつきませんでした。
・ツリー全体表示

【80991】Re:数字の表示形式について
お礼  mikky  - 19/7/2(火) 22:19 -

引用なし
パスワード
   ご回答ありがとうございました。
Round関数で四捨五入させて、それから表示形式を変えれば良いのですね。

444.6→445.00と変換しないといけないような特殊な入力箇所がありましたので
質問させていただきました。

ありがとうございました。

▼γ さん:
>▼マナ さん:
>>初めてみました。
>>勉強になります。
>> 
>
>そうですよねえ。普通こういう表示はしないですもん。
>
>444.6 → (変換)445.00とするのは反則技です。
>どうみても、445.00という表示は、
>444.995〜445.00499...の範囲の数値を表すと予測させますから、
>ミスリードさせる間違った使い方と言ってよいのではないでしょうか。
・ツリー全体表示

【80990】Re:数字の表示形式について
発言  γ  - 19/7/2(火) 21:14 -

引用なし
パスワード
   ▼マナ さん:
>初めてみました。
>勉強になります。
> 

そうですよねえ。普通こういう表示はしないですもん。

444.6 → (変換)445.00とするのは反則技です。
どうみても、445.00という表示は、
444.995〜445.00499...の範囲の数値を表すと予測させますから、
ミスリードさせる間違った使い方と言ってよいのではないでしょうか。
・ツリー全体表示

【80989】Re:数字の表示形式について
お礼  マナ  - 19/7/2(火) 20:56 -

引用なし
パスワード
   ▼γ さん:
>表示形式
>0".00"

初めてみました。
勉強になります。
 
・ツリー全体表示

【80988】Re:数字の表示形式について
回答  γ  - 19/7/2(火) 20:43 -

引用なし
パスワード
   表示形式
0".00"
でよいかも。

こちらはVBA質問箱であって、
ExelとVBAの質問箱じゃないですよ、
・ツリー全体表示

【80987】Re:数字の表示形式について
発言  マナ  - 19/7/2(火) 20:35 -

引用なし
パスワード
   ▼mikky さん:

ここはExcel VBA(マクロ)の質問掲示板です。

ROUND関数で四捨五入して
セルの書式設定で表示形式を、0.00
・ツリー全体表示

【80986】数字の表示形式について
質問  mikky  - 19/7/2(火) 18:59 -

引用なし
パスワード
   数字の表示形式を、四捨五入かつ小数点以下は第2位まで00と変換したいのですが、その場合はどのような構文を使えばよいのでしょうか。

(例)
444.6 → (変換)445.00
394.44→ (変換)394.00
578.4→ (変換)578.00

恐れ入りますがご教授願います。
・ツリー全体表示

【80985】Re:2回に1回エラーが出る
お礼  さと  - 19/7/1(月) 12:36 -

引用なし
パスワード
   よろずやさん、γさん

ありがとうございました。
原因が分かってすっきりしました。
・ツリー全体表示

【80984】Re:application.runでのマクロの呼び出し...
お礼  初心者  - 19/6/30(日) 17:29 -

引用なし
パスワード
   なるほど、&でつなげばよかったのですね!

無事に動かすことができました!

ありがとうございます!
・ツリー全体表示

【80983】Re:application.runでのマクロの呼び出し...
発言  マナ  - 19/6/30(日) 16:17 -

引用なし
パスワード
   ▼初心者 さん:

>application.run x!y

application.run x & "!" & y

では?
変数は & でつなぎます。
・ツリー全体表示

【80982】application.runでのマクロの呼び出しに...
質問  初心者  - 19/6/30(日) 15:19 -

引用なし
パスワード
   for i = 1 to sheets(1).cells(rows.count,1).end(xlup).row

set book = workbooks.open(thisworkbook.path & "\" sheets(1).cells(i,1) & ".xlsm")

application.run 質問部分

book.close savechanges:=true

というマクロを作ったのですが、質問部分が ブック名!マクロ名 になるとは思うのですが、それらをセルを参照して取得することは可能でしょうか?

例えば

x = cells(i,1)
y = cells(i,2)

application.run x!y

になるのかと思ってやってみたのですが動かなかったので、もし可能ならばご教授頂けると幸いです。
・ツリー全体表示

【80981】Re:対応した2つのセル選択を同時に繰り...
発言  ピンク  - 19/6/28(金) 13:59 -

引用なし
パスワード
   参考になりますかな?
Sub Test()
  Dim dt As Range, n As Long
  
  n = 3
  For Each dt In Range("C4,C12,C25")
    MsgBox dt.Address & " の時は" & vbCrLf & _
      Sheets("rawdata").Range(dt.Address).Offset(-n).Address(External:=True)
    n = n + 4
  Next
End Sub
・ツリー全体表示

【80980】Re:対応した2つのセル選択を同時に繰り...
回答  よろずや  - 19/6/28(金) 9:55 -

引用なし
パスワード
   Sub Test()
  Dim i As Long
  For i = 0 To 2
    Sheets("Sheet1").Range(Split("C4,C12,C25", ",")(i)).Copy
    Sheets("Sheet2").Range(Split("C1,C5,C14", ",")(i)).PasteSpecial xlPasteValues
  Next i
End Sub

みたいな感じ。
・ツリー全体表示

【80979】対応した2つのセル選択を同時に繰り返す...
質問  KH  - 19/6/27(木) 23:46 -

引用なし
パスワード
   以下のコードでfor eachで繰り返し処理をしています(C4,C12,C25)。
次にHlookupの中のrange("C1")も繰り返し処理を同時にしたいです(違うシートのC1,C5,C14)。
つまり、C4の時はC1、C12の時はC5、C25の時はC14というように対応したもので繰り返しを行いたいです。

説明が下手で申し訳ありません。

分かる方、教えていただければと思います。


Sub 生データ貼り付け()
  Application.ScreenUpdating = False
  Dim dt As Range
  For Each dt In Range("C4,C12,C25")
    Dim i As Long
    i = 0
    dt.Select
    Do
      Selection.Value = WorksheetFunction _
      .HLookup(ActiveCell.Offset(-1, 0), Sheets("rawdata").Range("C1").CurrentRegion, 2, 0)
      i = i + 1
      Selection.Offset(0, 1).Select
    Loop While ActiveCell.Offset(-1, 0).Value <> ""
  Next
End Sub
・ツリー全体表示

【80978】Re:選択セルのみ変更して繰り返す
お礼  KH  - 19/6/27(木) 23:19 -

引用なし
パスワード
   ▼ピンク さん:

そっちにいれれば良いんですね!
色々とありがとうございました
・ツリー全体表示

【80977】Re:2回に1回エラーが出る
回答  γ  - 19/6/27(木) 22:10 -

引用なし
パスワード
   既にコメントをいただいていて、重複になって恐縮です。

質問者さん、コードの提示ご苦労さまでした。

変数宣言の位置というよりも
> a = Selection.Rows.Count
> b = Selection.Columns.Count
という命令よりも前に、
.Range("B2").CurrentRegion.Offset(2, 1).Select
を実行していることが重要です。
「コードのなかで選択(Selectionを限定)」していることがポイントです。

つまり、
> ■19/6/23(日) 19:23のコードでは、
> 無造作に
>  a = Selection.Rows.Count
>  b = Selection.Columns.Count
> で始まっている。
> そのとき何が選択されているか分かったものじゃない。
という状態から脱したことが大きいのです。
プロシージャの開始時点における冗長性(可能性が多いこと)がなくなったことが大きいのです。

----------
なお、変数宣言の位置について補足すれば、
実行前であれば、
・使用の直前であっても
・プロシージャーの先頭に纏めても
動作に影響はありません。誤解無きよう。
・ツリー全体表示

【80976】Re:ピボットから.GetDataで総計を取る際
発言  マナ  - 19/6/27(木) 19:48 -

引用なし
パスワード
   ▼とうもろこし さん:

ピボットのレイアウトを具体的に説明してください。
・ツリー全体表示

74 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free