Excel VBA質問箱 IV

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

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


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

【77373】番号合わせ
質問  トキノハジメ  - 15/8/12(水) 14:11 -

引用なし
パスワード
   いつもお世話になります。
一つ教えて下さい。

   A  B  C  D  E  F  G  H  I  J  K
1
2 番号 10  4  1  6  9  8  2  5  7  3
3
4
5 番号  1  2  3  4  5  6  7  8  9 10
6 点数 93 92 95 88 97 96 89 94 99 93

A5,A6列に別シートからデータを以降してきて、A2 の
列の番号の下にA5列の番号の下のA6列の点数をA3列に抽出
して記入したいのですが何を使えば良いのか教えて下さい。
・ツリー全体表示

【77372】Re:ダブルクリックのマクロ
お礼  コーヒー  - 15/8/11(火) 17:23 -

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

ありがとうございました!!
詳しい説明をいただき、助かりました。


>▼コーヒー さん:
>
>こんにちは
>
>      Selection.Offset(0, -5).Select
>
>こうしても Targetは変わりません。I100 等のままです。
>ですから
>      Target.Value = Date
>これで、せっかく 星を付けたセルに日付が書きこまれます。
>
>やるなら Selection.Value = Date でしょうけど、このためにわざわざセルを選択する必要はありません。
>
>CHK_FLG の設定と判定も(アップされたコードだけからいえば)不要だと思います。
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>
>  If Intersect(Target, Range("I3:I3000")) Is Nothing Then Exit Sub
>
>  If Target.Value = "" Then
>    Target.Value = "★"
>    Target.Offset(, -5).Value = Date
>    Cancel = True
>  End If
>  
>End Sub
>
>
>こうしても
>>こんにちは。以前こちらでお世話になったものです。
>>
>>下記のようにI列のセルをダブルクリックすると、★マークが付くようになっています。
>>それと同時に、同じ行の日付が記入されているD列に今日の日付に変わる設定したいです。
>>
>>やってみたのですが、I列に★がつく代わりに、日付が入ってしまします。
>>お手数ですが、ご教授をお願いいたします。
>>
>>(例)
>>D100:8/15 I100:空白
>>I100をダブルクリックすると
>>D100:8/11 I100:★
>>に変わるようにしたい
>>
>>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>>  Dim CHK_FLG  As Boolean
>> 
>>
>>CHK_FLG = True
>>  If Intersect(Target, Range("I3:I3000")) Is Nothing Then CHK_FLG = False
>> 
>>  If CHK_FLG Then
>>    If Target.Value = "" Then
>>      Target.Value = "★"
>>      Selection.Offset(0, -5).Select
>>      Target.Value = Date
>>      Cancel = True
>>    End If
>>    Exit Sub
>>  End If
>>    
>>End Sub
・ツリー全体表示

【77371】Re:ダブルクリックのマクロ
発言  β  - 15/8/11(火) 15:55 -

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

こんにちは

      Selection.Offset(0, -5).Select

こうしても Targetは変わりません。I100 等のままです。
ですから
      Target.Value = Date
これで、せっかく 星を付けたセルに日付が書きこまれます。

やるなら Selection.Value = Date でしょうけど、このためにわざわざセルを選択する必要はありません。

CHK_FLG の設定と判定も(アップされたコードだけからいえば)不要だと思います。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  If Intersect(Target, Range("I3:I3000")) Is Nothing Then Exit Sub

  If Target.Value = "" Then
    Target.Value = "★"
    Target.Offset(, -5).Value = Date
    Cancel = True
  End If
  
End Sub


こうしても
>こんにちは。以前こちらでお世話になったものです。
>
>下記のようにI列のセルをダブルクリックすると、★マークが付くようになっています。
>それと同時に、同じ行の日付が記入されているD列に今日の日付に変わる設定したいです。
>
>やってみたのですが、I列に★がつく代わりに、日付が入ってしまします。
>お手数ですが、ご教授をお願いいたします。
>
>(例)
>D100:8/15 I100:空白
>I100をダブルクリックすると
>D100:8/11 I100:★
>に変わるようにしたい
>
>Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
>  Dim CHK_FLG  As Boolean
> 
>
>CHK_FLG = True
>  If Intersect(Target, Range("I3:I3000")) Is Nothing Then CHK_FLG = False
> 
>  If CHK_FLG Then
>    If Target.Value = "" Then
>      Target.Value = "★"
>      Selection.Offset(0, -5).Select
>      Target.Value = Date
>      Cancel = True
>    End If
>    Exit Sub
>  End If
>    
>End Sub
・ツリー全体表示

【77370】ダブルクリックのマクロ
質問  コーヒー  - 15/8/11(火) 12:28 -

引用なし
パスワード
   こんにちは。以前こちらでお世話になったものです。

下記のようにI列のセルをダブルクリックすると、★マークが付くようになっています。
それと同時に、同じ行の日付が記入されているD列に今日の日付に変わる設定したいです。

やってみたのですが、I列に★がつく代わりに、日付が入ってしまします。
お手数ですが、ご教授をお願いいたします。

(例)
D100:8/15 I100:空白
I100をダブルクリックすると
D100:8/11 I100:★
に変わるようにしたい

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim CHK_FLG  As Boolean
 

CHK_FLG = True
  If Intersect(Target, Range("I3:I3000")) Is Nothing Then CHK_FLG = False
 
  If CHK_FLG Then
    If Target.Value = "" Then
      Target.Value = "★"
      Selection.Offset(0, -5).Select
      Target.Value = Date
      Cancel = True
    End If
    Exit Sub
  End If
    
End Sub
・ツリー全体表示

【77369】Re:CSV出力について
お礼  Masa  - 15/8/5(水) 18:05 -

引用なし
パスワード
   ウッシさん、kanabunさんありがとうございます。

ダブルクォーテーションを取りたくて、質問をさせて頂きました。
アドバイス頂いた内容を参考に、仕様の変更を含め、担当者と話を
したいと思います。

アドバイスを頂きありがとうございました。
・ツリー全体表示

【77368】Re:CSV出力について
回答  ウッシ  - 15/8/4(火) 8:04 -

引用なし
パスワード
   こんにちは

文字列としてフォーマットしてWriteするとダブルクォーテーションで
囲まれてしまうのが問題なのかと思い、一時シートを作成してそのシート
をcsvファイルとして保存すればいいかと思ったのですが、一時シートを
作成する事にどんな支障があるのでしょうか?

こちらで確認したケースではシート上の「2015/08/01」「100.00」という
表示形式のデータを保存すると
2015/08/01
100.00
となりましたけどダメでしょうか?
・ツリー全体表示

【77367】Re:CSV出力について
発言  kanabun  - 15/8/3(月) 20:09 -

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

>Formatを使用してとも考えたのですが、文字型となって
>しまうため、何か方法がないもかと質問を上げさせて
>頂いた次第です。
>
>やはり、数値のまま、0.00と出力するのは無理ですよね・・・。

でも、CSVはテキスト(文字列) ですよ

>  Dim Hiduke  As String '日付

これと同じように、
Formatかけて 文字列として保存すればいいだけだと思うのですが?

  Dim tanka As String
  Hiduke = Format$(Range("A1").Value, "yyyymmdd")
  Tanka = Format$(Val(Range("A2").Value), "#0.00")

  Write #1, Hiduke, Tanka
・ツリー全体表示

【77366】Re:CSV出力について
お礼  Masa  - 15/8/3(月) 18:39 -

引用なし
パスワード
   回答頂きありがとうございます。

別シートに出力して行う方法は、出来ない事情があり
Writeしています。
Formatを使用してとも考えたのですが、文字型となって
しまうため、何か方法がないもかと質問を上げさせて
頂いた次第です。

やはり、数値のまま、0.00と出力するのは無理ですよね・・・。
・ツリー全体表示

【77365】Re:CSV出力について
回答  ウッシ  - 15/8/3(月) 16:12 -

引用なし
パスワード
   こんにちは

必要な表示形式で一時シートを作成して、先の「test」のコードで
保存するのはダメでしょうか?

でなければ、100.00 も文字列として書き出すか。

Dim Tanka   As String '納価
Tanka = Range("A2").Text
・ツリー全体表示

【77364】Re:CSV出力について
質問  Masa  - 15/8/3(月) 15:58 -

引用なし
パスワード
   回答ありがとうございます。

一部省略していますが、下記のコードで作成しています。
-------------
  Dim Hidule  As String '日付
  Dim Tanka   As Double '納価

  Hidule = Format(Range("A1").Value, "yyyymmdd")
  Tanka = Range("A2").Value

  Write #FileNo, Hiduke, Tanka
--------------
A1:
 2015/08/01→"20150801"で出力したい ==> 問題なし
A2:
 100.00→100.00で出力したい ==> 100となってしまう
 0もしくは""→0.00で出力したい ==> 0となってしまう
 100.05→100.05で出力したい ==> 問題なし

小数部が0の場合に整数部だけで出力されてしまうため
何か方法はないかと悩んでいます。

良い方法はありますでしょうか。
宜しくお願い致します。
・ツリー全体表示

【77363】Re:CSV出力について
回答  ウッシ  - 15/8/3(月) 15:38 -

引用なし
パスワード
   こんにちは

どのようなコードですか?

シートをそのまま保存するなら、

Sub test()
  Sheets("Sheet1").Copy
  ActiveWorkbook.SaveAs Filename:="C:\temp\test.csv", _
    FileFormat:=xlCSV, CreateBackup:=False
  ActiveWorkbook.Save
  ActiveWindow.Close False
End Sub

これ位でも出来ますけおd。
・ツリー全体表示

【77362】CSV出力について
質問  Masa  - 15/8/3(月) 15:26 -

引用なし
パスワード
   EXCEL VBAにてCSVファイルを出力します。
出力項目に数値(少数以下2桁)があり、””or 0の場合、
0.00で出力したいのですが、0となってしまいます。
何か方法はありますでしょうか。

宜しくお願い致します。
・ツリー全体表示

【77361】Re:指定期間の絞り込み
発言  kanabun  - 15/7/30(木) 17:05 -

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

>D列に「日付」データが入っています。
>F2に開始日、G2に終了日が入っています。

AdvancedFilterと同じで フィルターで日付を抽出するには
シリアル値で範囲を指定してください。
そうすることで、日付(という数値)を セルの書式の影響を受けず
フィルタリングできます。

Private Sub Cmd期間_Click()
 Dim 開始日 As Long  '★シリアル値
 Dim 終了日 As Long  '★シリアル値
 
 開始日 = Worksheets("集計").Range("F2").Value2 '★シリアル値
 終了日 = Worksheets("集計").Range("G2").Value2 '★シリアル値
 
 Worksheets("集計").Range("A3:L2000").AutoFilter Field:=4, _
  Criteria1:=">=" & 開始日, _
  Operator:=xlAnd, _
  Criteria2:="<=" & 終了日
End Sub
・ツリー全体表示

【77360】Re:指定期間の絞り込み
お礼  なつ  - 15/7/30(木) 17:03 -

引用なし
パスワード
   Jakaさん、ご教授いただき、ありがとうございます。
上手く行きました!
・ツリー全体表示

【77359】Re:指定期間の絞り込み
発言  Jaka  - 15/7/30(木) 16:58 -

引用なし
パスワード
   すみません。
2007だと、日付が数式で表示されていると拾わなかった。

最近、エクセルをいじっていなかったので・・・。
97、2000、2002、2003の頃は拾えていたような???

日付が数式で無く直接入力なら、表示形式には万能だと思います。
ろくに確認してないけど。
・ツリー全体表示

【77358】Re:指定期間の絞り込み
発言  Jaka  - 15/7/30(木) 16:26 -

引用なし
パスワード
   私的には、これが万能だと思っています。

Dim 開始日 As String
Dim 終了日 As String

開始日 = format(Worksheets("集計").Range("F2"),"yyyy/mm/dd")
終了日 = format(Worksheets("集計").Range("G2"),"yyyy/mm/dd")
・ツリー全体表示

【77357】指定期間の絞り込み
質問  なつ  - 15/7/30(木) 15:11 -

引用なし
パスワード
   こんにちは。
開始日(例:2015/7/30)から終了日(例:2015/8/14)までのデータを
絞り込みたいのですが、ボタンをクリックすると空白で返ってきます。
どうすれば上手く絞れ込めるかご教授をお願いいたします。

D列に「日付」データが入っています。
F2に開始日、G2に終了日が入っています。

お手数ですが、宜しくお願いします。


Private Sub Cmd期間_Click()
Dim 開始日 As Date
Dim 終了日 As Date

開始日 = Worksheets("集計").Range("F2")
終了日 = Worksheets("集計").Range("G2")

Worksheets("集計").Range("A3:L2000").AutoFilter Field:=4, _
Criteria1:=">=" & 開始日, _
Operator:=xlAnd, _
Criteria2:="<=" & 終了日
End Sub
・ツリー全体表示

【77356】Re:文字列を数値に変換
お礼  tomi  - 15/7/30(木) 11:57 -

引用なし
パスワード
   ▼kanabun さん:
>▼tomi さん:
>>よろしくお願いします。文字列等のものを数字に変換したいと思います。
>> 問題は小数点を含むものです。
>> CsngやCdbl等で変換を使用してもうまくできません(整数になっていしまいます)
>> たとえば"281.3"を変換して 数字の 281.3にしたいのです。
>
>Csngは精度がよくないので、Cdblを使ってください。
>他には Val関数とか?
>
> Debug.Print CDbl("281.3")  '→ 281.3 に変換される
> Debug.Print Val("1234.56") '→ 1234.56 に変換される
> 
> On Error Resume Next
> Debug.Print CDbl("281. 3")  '→ エラー
> Debug.Print Val("1234. 56") '→ 1234.56 に変換される
> 
> Debug.Print CDbl("281。3")  '→ エラー
> Debug.Print Val("1234。56") '→ 整数 1234 に変換される
ありがとうございました。解決しました。
・ツリー全体表示

【77355】Re:文字列を数値に変換
発言  kanabun  - 15/7/30(木) 11:06 -

引用なし
パスワード
   ▼tomi さん:
>よろしくお願いします。文字列等のものを数字に変換したいと思います。
> 問題は小数点を含むものです。
> CsngやCdbl等で変換を使用してもうまくできません(整数になっていしまいます)
> たとえば"281.3"を変換して 数字の 281.3にしたいのです。

Csngは精度がよくないので、Cdblを使ってください。
他には Val関数とか?

 Debug.Print CDbl("281.3")  '→ 281.3 に変換される
 Debug.Print Val("1234.56") '→ 1234.56 に変換される
 
 On Error Resume Next
 Debug.Print CDbl("281. 3")  '→ エラー
 Debug.Print Val("1234. 56") '→ 1234.56 に変換される
 
 Debug.Print CDbl("281。3")  '→ エラー
 Debug.Print Val("1234。56") '→ 整数 1234 に変換される
・ツリー全体表示

【77354】文字列を数値に変換
質問  tomi  - 15/7/30(木) 9:07 -

引用なし
パスワード
   よろしくお願いします。文字列等のものを数字に変換したいと思います。
 問題は小数点を含むものです。
 CsngやCdbl等で変換を使用してもうまくできません(整数になっていしまいます)
 たとえば"281.3"を変換して 数字の 281.3にしたいのです。
 よろしくお願いします。
・ツリー全体表示

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