Excel VBA質問箱 IV

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

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


6584 / 13646 ツリー ←次へ | 前へ→

【44418】数式を書込したいのですが ichiro 06/11/15(水) 20:39 質問[未読]
【44422】Re:数式を書込したいのですが Kein 06/11/15(水) 23:11 回答[未読]
【44423】Re:数式を書込したいのですが ichiro 06/11/15(水) 23:44 発言[未読]
【44424】Re:数式を書込したいのですが Kein 06/11/15(水) 23:48 発言[未読]
【44425】Re:数式を書込したいのですが ichiro 06/11/16(木) 0:00 発言[未読]
【44428】Re:数式を書込したいのですが Kein 06/11/16(木) 0:54 回答[未読]
【44429】Re:数式を書込したいのですが ichiro 06/11/16(木) 1:13 発言[未読]
【44430】Re:数式を書込したいのですが ichiro 06/11/16(木) 1:25 発言[未読]
【44431】Re:数式を書込したいのですが Kein 06/11/16(木) 1:44 発言[未読]
【44432】Re:数式を書込したいのですが ichiro 06/11/16(木) 1:56 お礼[未読]

【44418】数式を書込したいのですが
質問  ichiro  - 06/11/15(水) 20:39 -

引用なし
パスワード
   ユーザーフォームで下記のコードを作成してあります。H列に数式を
挿入したいのですが教えてください。
H3に=IF(ISBLANK(G3),"",IF(ISERROR(G3/F3),"",G3/F3))
H4に=IF(ISBLANK(G4),"",IF(ISERROR(G4/F4),"",G4/F4))
        :
        :
H68に=IF(ISBLANK(G68),"",IF(ISERROR(G68/F68),"",G68/F68))
コマンドボタンをクリックで書き込みできますか
よろしくお願いします。

現在のコードです。
Private Sub CommandButton1_Click()
  Dim rc As Long
  rc = MsgBox("データをシートに書込します。よろしいですか?", vbYesNo)
     If rc = vbYes Then
  With Range("A65536").End(xlUp).Offset(1)
    .Value = Me.TextBox1.Value
    .Offset(, 1).Value = Me.TextBox2.Value
    .Offset(, 2).Value = Me.TextBox3.Value
    .Offset(, 3).Value = Me.TextBox4.Value
    .Offset(, 4).Value = Me.ListBox2.Value
    .Offset(, 5).Value = Me.TextBox5.Value
    .Offset(, 6).Value = Me.TextBox6.Value
    .Offset(, 8).Value = Me.ListBox1.Value
  End With
 Unload Me
 Else
 Hide
End If
End Sub

Private Sub UserForm_Initialize()
Call UserForm_Initialize2
Dim ER As Long
Dim d As Date
d = Date
ER = Range("A65536").End(xlUp).Row
If ER < 3 Then
 TextBox1.Value = "001"
Else
 TextBox1.Value = Format(Range("A" & ER).Value + 1, "000")
End If
 TextBox2.Value = Format(d, "ggg") & _
         Format(Format(d, "e"), "@@") & "年" & _
         Format(Month(d), "@@") & "月" & _
         Format(Day(d), "@@") & "日"
  ListBox1.RowSource = "Sheet1!L2:L12"
  ListBox2.RowSource = "Sheet1!M2:M3"
  TextBox5.Tag = 0
  TextBox5.Text = 0
  TextBox6.Tag = 0
  TextBox6.Text = 0

【44422】Re:数式を書込したいのですが
回答  Kein  - 06/11/15(水) 23:11 -

引用なし
パスワード
   >コマンドボタンをクリックで書き込み
は、提示されている CommandButton1_Click のコードに追加したい、
という意味ですか、それとも他のボタンに独立して割り当てたい
のでしょーか ? いちおう数式を入力するコードは

Range("H3:H68").Formula = _
"=IF(ISBLANK($G3),"""",IF(ISERROR($G3/$F3),"""",$G3/$F3))"

に、なりますが。

【44423】Re:数式を書込したいのですが
発言  ichiro  - 06/11/15(水) 23:44 -

引用なし
パスワード
   ▼Kein さん:
>>コマンドボタンをクリックで書き込み
>は、提示されている CommandButton1_Click のコードに追加したい、
>という意味ですか、それとも他のボタンに独立して割り当てたい
>のでしょーか ? いちおう数式を入力するコードは
>
>Range("H3:H68").Formula = _
>"=IF(ISBLANK($G3),"""",IF(ISERROR($G3/$F3),"""",$G3/$F3))"
>
>に、なりますが。
Keinさん返事ありがとうございます。
CommandButton1_Click のコードに追加したいと言うことです。
説明不足ですみません
既コードにどういうふうに組み込んでいいか解りません。

よろしくお願いします。

【44424】Re:数式を書込したいのですが
発言  Kein  - 06/11/15(水) 23:48 -

引用なし
パスワード
   だったら普通は
>If rc = vbYes Then

>Else
の間にそのコードを入れますよね・・?

【44425】Re:数式を書込したいのですが
発言  ichiro  - 06/11/16(木) 0:00 -

引用なし
パスワード
   ▼Kein さん:
>だったら普通は
>>If rc = vbYes Then
>と
>>Else
>の間にそのコードを入れますよね・・?
Keinさんありがとうございます。
下記のようにいれてみました
1度目のコマンドボタンクリックで
いっぺんに68行目まで数式が入るのですが
1行毎に数式を入れるということは出来るのでしょうか。
参考にお聞きしたいのですが よろしくお願いします。

Private Sub CommandButton1_Click()
  Dim rc As Long
  rc = MsgBox("データをシートに書込します。よろしいですか?", vbYesNo)
     If rc = vbYes Then
  With Range("A65536").End(xlUp).Offset(1)
    .Value = Me.TextBox1.Value
    .Offset(, 1).Value = Me.TextBox2.Value
    .Offset(, 2).Value = Me.TextBox3.Value
    .Offset(, 3).Value = Me.TextBox4.Value
    .Offset(, 4).Value = Me.ComboBox1.Value
    .Offset(, 5).Value = Me.TextBox5.Value
    .Offset(, 6).Value = Me.TextBox6.Value
    .Offset(, 8).Value = Me.ListBox1.Value
Range("H3:H68").Formula = _
"=IF(ISBLANK($G3),"""",IF(ISERROR($G3/$F3),"""",$G3/$F3))"
  End With
 Unload Me
 Else
 Hide
End If
End Sub

【44428】Re:数式を書込したいのですが
回答  Kein  - 06/11/16(木) 0:54 -

引用なし
パスワード
   >1行毎に数式を入れる
H3からH68までのセルに、ボタンをクリックする毎に一つずつ数式を入れるなら、
まず UserForm_Initialize() のコードのどこかに

  Range("$H:$H").Clear

と追加して、CommandButton1_Click() の方は

  Dim FmR As Long

と変数の宣言を追加、数式を入力するコードは

  If WorksheetFunction.CountBlank(Range("H3:H68")) > 0 Then
   With Range("H3:H68").SpecialCells(4).Cells(1)
     FmR = .Row
     .Formula = _
     "=IF(ISBLANK($G" & FmR & "),"""",IF(ISERROR($G" & _
     FmR & "/$F" & FmR & "),"""",$G" & FmR & "/$F" & FmR & "))"
   End With
  End If

とすれば良いでしょう。事前にH列を全クリアするのは、確実に空白セルを
作っておくためです。こちらでテストしたとき、そうしないと CountBlank関数
や SpecialCellsメソッドが正しく働かなかったからです。

【44429】Re:数式を書込したいのですが
発言  ichiro  - 06/11/16(木) 1:13 -

引用なし
パスワード
   ▼Kein さん:
ありがとうございます。
遅くまですみません
クリア以外うまくいきました 思い通りgoodです

>>1行毎に数式を入れる
>H3からH68までのセルに、ボタンをクリックする毎に一つずつ数式を入れるなら、
>まず UserForm_Initialize() のコードのどこかに
>
>  Range("$H:$H").Clear
上記コードですと書式全て消えてしまうのですが
データのみクリアする方法をおしえてください
>
>と追加して、CommandButton1_Click() の方は
>
>  Dim FmR As Long
>
>と変数の宣言を追加、数式を入力するコードは
>
>  If WorksheetFunction.CountBlank(Range("H3:H68")) > 0 Then
>   With Range("H3:H68").SpecialCells(4).Cells(1)
>     FmR = .Row
>     .Formula = _
>     "=IF(ISBLANK($G" & FmR & "),"""",IF(ISERROR($G" & _
>     FmR & "/$F" & FmR & "),"""",$G" & FmR & "/$F" & FmR & "))"
>   End With
>  End If
>
>とすれば良いでしょう。事前にH列を全クリアするのは、確実に空白セルを
>作っておくためです。こちらでテストしたとき、そうしないと CountBlank関数
>や SpecialCellsメソッドが正しく働かなかったからです。

【44430】Re:数式を書込したいのですが
発言  ichiro  - 06/11/16(木) 1:25 -

引用なし
パスワード
   ▼Kein さん:
下記テストの結果ですが
H列書式全て消えてしまう(データのみ消したいのですが)
次にH3のみしかデータが書き換えられない
ユーザーフォームで1行ずつ追記・追記してゆくことができません。
以上テスト結果です。よろしくお願いします。

>>1行毎に数式を入れる
>H3からH68までのセルに、ボタンをクリックする毎に一つずつ数式を入れるなら、
>まず UserForm_Initialize() のコードのどこかに
>
>  Range("$H:$H").Clear
>
>と追加して、CommandButton1_Click() の方は
>
>  Dim FmR As Long
>
>と変数の宣言を追加、数式を入力するコードは
>
>  If WorksheetFunction.CountBlank(Range("H3:H68")) > 0 Then
>   With Range("H3:H68").SpecialCells(4).Cells(1)
>     FmR = .Row
>     .Formula = _
>     "=IF(ISBLANK($G" & FmR & "),"""",IF(ISERROR($G" & _
>     FmR & "/$F" & FmR & "),"""",$G" & FmR & "/$F" & FmR & "))"
>   End With
>  End If
>
>とすれば良いでしょう。事前にH列を全クリアするのは、確実に空白セルを
>作っておくためです。こちらでテストしたとき、そうしないと CountBlank関数
>や SpecialCellsメソッドが正しく働かなかったからです。

【44431】Re:数式を書込したいのですが
発言  Kein  - 06/11/16(木) 1:44 -

引用なし
パスワード
   >データのみ消したい
なら、Range("$H:$H").ClearContents とします。
イマイチどういう使い方をしたいのか分からないのですが、
クリアしなくても CountBlank や SpecialCells(4) が正しく
働くなら、そのコードは無くても良いでしょう。

【44432】Re:数式を書込したいのですが
お礼  ichiro  - 06/11/16(木) 1:56 -

引用なし
パスワード
   ▼Kein さん:
>>データのみ消したい
>なら、Range("$H:$H").ClearContents とします。
>イマイチどういう使い方をしたいのか分からないのですが、
>クリアしなくても CountBlank や SpecialCells(4) が正しく
>働くなら、そのコードは無くても良いでしょう。
Keinさんありがとうございました。
>なら、Range("$H:$H").ClearContents とします。
上記なくしたらうまくいきました。
お世話になりました。
ほんとに遅くまですみませんでした。
解決です。(^^)/~~~

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