Excel VBA質問箱 IV

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

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


1 / 3685 ページ 前へ→

【79334】Re:RANDBETWEENについて
発言[NEW]  カリーニン  - 17/7/26(水) 0:20 -

引用なし
パスワード
   もう一つ方法があるのを忘れてました。

[B2:U21] = "=RANDBETWEEN(0, 1)"
・ツリー全体表示

【79333】Re:RANDBETWEENについて
お礼  あああああ  - 17/7/19(水) 23:22 -

引用なし
パスワード
   ご丁寧に説明していただきまして、ありがとうございました。
載せてくださったサイトを参考に勉強します。
・ツリー全体表示

【79332】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 23:51 -

引用なし
パスワード
   ↓も参考になると思います。

ht tp://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_070_10.html

最初の

>Sheets("Sheet1").Range("B2:U21") = RandBetween(0, 1)

これは、Rangeオブジェクトのプロパティが省略されてますので、

Sheets("Sheet1").Range("B2:U21").Value = RandBetween(0, 1)

と同じことになります。Rangeオブジェクトのプロパティが省略されると、
デフォルトであるValueプロパティと判断されます。

今度は、右辺の

>RandBetween(0, 1)

は""で括られてないので、変数として宣言してない限り、エラーとなります。

式を埋め込む場合は

= "=式"

と代入してやります。
・ツリー全体表示

【79331】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 23:06 -

引用なし
パスワード
   式を残したくない場合は、↓のようにしてください。

With Worksheets("Sheet1").Range("B2:U21")
 .FormulaR1C1 = "=RandBetween(0, 1)"
 .Value = .Value
End With
・ツリー全体表示

【79330】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:57 -

引用なし
パスワード
   ワークシート関数を直接使う場合は↓のように書きます。

Sub test2()
Dim c As Range
Dim r As Range
Set r = Worksheets("Sheet1").Range("B2:U21")
For Each c In r
 c.Value = WorksheetFunction.RandBetween(0, 1)
Next c
Set r = Nothing
End Sub
・ツリー全体表示

【79329】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:44 -

引用なし
パスワード
   参考HPです。

ht tp://excelwork.info/excel/funcrnd/
・ツリー全体表示

【79328】Re:RANDBETWEENについて
発言  カリーニン  - 17/7/18(火) 22:41 -

引用なし
パスワード
   まず、基本書やヘルプ、解説サイトで勉強することをお勧めします。
正直言って、書き方がめちゃくちゃです。

Worksheets("Sheet1").Range("B2:U21").FormulaR1C1 = "=RandBetween(0, 1)"

これは、数式を埋め込んでますが、VBAで直接乱数を発生させることも可能です。
・ツリー全体表示

【79327】RANDBETWEENについて
質問  あああああ  - 17/7/18(火) 22:27 -

引用なし
パスワード
   VBA初心者です。

早速お聞きしたいのですが、Sheet1のB2からU21の範囲でランダムに0か1の値を表示させたくて以下のように記述しました。

Sub Macro()
  Sheets("Sheet1").Range("B2:U21") = RandBetween(0, 1)
End Sub

ですが、実行しようとするとコンパイルエラーが表示されてどこを直せばいいのか分かりません。
すみませんが回答のほどお待ちしております。
・ツリー全体表示

【79326】Re:指定したセルに貼り付け
発言  アリエス  - 17/7/15(土) 8:25 -

引用なし
パスワード
   ご指摘ありがとうございます。
丸投げに等しい質問に対して、恥ずかしく思っています。
現状、自力で作成しており、行き詰る点が出てくると思います。
その際にあらためて質問させて頂きたいと思います。
よろしくお願いします。
・ツリー全体表示

【79325】Re:指定したセルに貼り付け
発言  γ  - 17/7/15(土) 6:57 -

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

「質問者の方へのお願い」に下記のように書かれています。

●何をやったか書いてください
> おそらくあなたは、色々なことを試してできなかった末にここに質問を書くのでしょう。
> しかし回答者は、あなたが今まで何をやってきたか、何を知っていて何を
> 知らないかわかりません。
> 今まで試したこと、やろうと思ったけどやり方がわからなかったことなどを
> できるだけ詳しく書いてください。

●してはいけない質問について
> 困ったことは基本的にどんな質問をされてもかまわないのですが、その中でも
> 不適切な質問、というのがあります。以下のような質問は原則として
> しないでください。お願いします。
>      (中略)
>  ・丸投げ
>    「○○するにはどうすればいいか教えてください」といったような、
>    コードを最初から最後まで教えてもらうことを期待するような質問

どこまで作られたか示して、詰まっているところを具体的に質問して下さい。
万一まったく一行も書けないなら、まずは基本テキストを学習することをお薦めします。

---------------
さて、つまっているのはどこですか?
あなたがどの程度学習されている方なのか、まったく分かりません。
こちらはサービスセンターではありません。
自分でてきているところまで示して、不明な点に絞って質問するようにしましょう。

コピーペイストする骨格のコードは書けているのですか?
日にちが規則的に並んでいるなら、33行 (5 + 日)列 のデータをコピーペイストすればいいのですか。

日という数字を指定する方法は、Inputboxのヘルプを真似すればよいことです。

複数あるということは、どのように入力するのですか?それを示さないと。
書込先のセルは、上から順に詰めていくのですか?
・ツリー全体表示

【79324】Re:指定したセルに貼り付け
発言  とおりすがり  - 17/7/14(金) 23:44 -

引用なし
パスワード
   参考です。

ht tp://www.vbalab.net/bbspolicy.html
・ツリー全体表示

【79323】指定したセルに貼り付け
質問  アリエス  - 17/7/14(金) 23:41 -

引用なし
パスワード
   下記に記入してあるエクセルマクロを作成したいのですが教えて頂けますでしょうか。

1.日付を指定する。
※日付は単数または複数がある。
2.推移図1.xlsを開く。
sheet1のF32からAJ32まで日付が1日〜31まで入力してあります。
sheetは複数有り、sheet1と同様のセルをコピーさせます。
日付が入力してある、1行下にデータが入力してあり、
指定した日付のデータをコピーする。

3.推移図2を開く。
推移図1同様に、sheet1のF32からAJ32まで日付が1日〜31まで入力してあります。
sheetは推移図1と同様の名前のsheetがあります。
日付が入力してある、1行下にデータを入力する欄があり、指定したシートの
データ欄に貼り付けます。

※項目1について勉強も兼ねてInputBoxに入力とワークブックに日付を入力する2パターンで作成したい。
・ツリー全体表示

【79322】Re:オブジェクトエラーの理由
質問  γ  - 17/7/10(月) 21:07 -

引用なし
パスワード
   ちょっとお聞きしますが、
そのコードは、何から何までを繰り返しているのですか?
説明してもらえますか?

# エラーが出ないということと、
# 目的が達せられていることは、
# 同じとは限りませんよ。
・ツリー全体表示

【79321】Re:オブジェクトエラーの理由
お礼  oshiete  - 17/7/10(月) 13:00 -

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

すいません、自分が行と列を反対で覚えてました。
下記のように記載したら出来ました。

Sub test()


Dim i As Long

For i = 1 To Cells(1, 1).End(xlDown)

If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
Range(Cells(i, 2), Cells(i + 1, 2)).Interior.ColorIndex = 3


End If

Next i

End Sub
・ツリー全体表示

【79320】Re:オブジェクトエラーの理由
お礼  oshiete  - 17/7/10(月) 12:58 -

引用なし
パスワード
   ▼カリーニン さん:

わかりました。
ありがとうございます。
行と列の定義を勘違いしてました。
下記のように書き換えたらできました↓↓↓

Sub test()

 Dim i As Long
 For i = 1 To Cells(1, 1).End(xlDown)

  If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
  Range(Cells(i, 2), Cells(i + 1, 2)).Interior.ColorIndex = 3

  End If

 Next i

End Sub
・ツリー全体表示

【79319】Re:オブジェクトエラーの理由
発言  カリーニン  - 17/7/10(月) 10:26 -

引用なし
パスワード
   > >もで行指定の.row つけてないと列になりますよね??

意味不明です。

> Cells(1, 1).End(xlDown)

これの意味は分かってますか?ヘルプ等で調べてみましたか?

γさんのレスは見られましたか?
・ツリー全体表示

【79318】Re:オブジェクトエラーの理由
回答  oshiete  - 17/7/10(月) 9:39 -

引用なし
パスワード
   ▼カリーニン さん:
>>>>For i = 1 To Cells(1, 1).End(xlDown) ←これ列方向であってますよね?
>
>行方向ですが・・・。


>もで行指定の.row つけてないと列になりますよね??
・ツリー全体表示

【79317】Re:オブジェクトエラーの理由
発言  γ  - 17/7/9(日) 6:43 -

引用なし
パスワード
   1. 行と列の取り違え。
2.For i = 1 To Cells(1, 1).End(xlDown).Row
  と行番号をループさせたいのではないか。
3. Cells(3, i)(3, i + 1) は意図と異なるものでしょう。
  Cells(3, i)(3, i + 1)は、Cells(3, i)を起点として、
  そこから(3, i + 1)の単独セルを参照するものです。
 
  セル範囲の指定方法は基本中の基本です。
  ただし、色々な方法がありますから慣れが必要です。
  基本テキストや、
  ht tp://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
  のようなサイトを参照して下さい。

思いつきで自己流のコードを書く前に、基本テキストを参照しながら、
それをまねてやっていく段階のようにお見受けします。
ステップを踏んでやっていくことは誰にも必要なことです。
頑張って下さい。 
・ツリー全体表示

【79316】Re:イベント管理:複数ファイルのイベント...
お礼  VBA 初心者  - 17/7/8(土) 16:39 -

引用なし
パスワード
   γさん

返信ありがとうございます。
また、貴重なヒントをいただき、ありがとうございます。

すいません。そのような意図はなかったのですが、挑発しているような文面で投稿していたとは、皆様に失礼なことをしました。本当にすいません。

また、マナーの1つと言える行と列の表示の配慮が足らず申し訳ありませんでした。
至らぬ点があり、皆様を不快にさせてしまい本当にすいませんでした。

そんな中、返信いただけたマナさん、γさん、ご親切にありがとうございました。
・ツリー全体表示

【79315】Re:イベント管理:複数ファイルのイベント...
発言  γ  - 17/7/8(土) 15:47 -

引用なし
パスワード
   DateDiff関数を使って、基準日からの月数を求めれば、
横方向の位置がわかるはずです。
そういう考え方で対応が可能だと思います。

私も時々こちらでコメントしている者ですが、
ちょっと敬遠しましたね。原因は、
> VBAでプログラムするのは無理なのかもしれません
などと挑発するようなある種の「あざとさ」でしょうか(失礼)。
もっとフラットに、「ここまでトライしたけれど、
ここにつきあたっています。教えてください。」
というような質問をされたほうがよいですね。

それと今後の質問の際に注意いただきたいことをメモします。
行、列位置をきちんとわかるようにしたほうがよいです。
> イベント1:XX年XX月XX日
などという記述は雑過ぎます。
・ツリー全体表示

1 / 3685 ページ 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free