Excel VBA質問箱 IV

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

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


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

【78573】Re:オートシェイプに名前を付ける方法
お礼  りった  - 16/11/15(火) 15:41 -

引用なし
パスワード
   回答有難うございます。
今作っているものには不向きですが、今後必要になった際に参考にさせて頂きます。
・ツリー全体表示

【78572】Re:オートシェイプに名前を付ける方法
お礼  りった  - 16/11/15(火) 15:38 -

引用なし
パスワード
   回答有難うございます。

GUIで名前を変更したり、参照したりする方法を期待していました。
例えば、「開発」リボンの「プロパティ」でWorksheetのプロパティが見れますが、
そんな感じでオートシェイプも変更/参照出来ないものかと思ってました。
(それ自体はマクロではありませんが、マクロにしか使わない操作ですので
マクロの掲示板で質問させて頂いております。)

ご教示頂いたコードをイミディエイトウィンドウから実行することで
とりあえずは何とかなります。有難うございます。
Selection.ShapeRange.Name = "Hoge"
? Selection.ShapeRange.Name

やってみて気が付いたのですが、変わった仕様(少なくとも私にとって)なんですね。
・複数のオートシェイプに同じ名前を付けることが可能。
・複数のオートシェイプに同じ名前(例:Hoge)を付けて、
 Sheet1.Shapes("Hoge").fill.ForeColor.RGB = RGB(0,255,0)
 すると、一つだけ緑になる。(最初に作ったオートシェイプ?)
・操作されたオートシェイプを削除して、再度
 Sheet1.Shapes("Hoge").fill.ForeColor.RGB = RGB(0,255,0)
 すると、別の一つが緑になる。(2番目に作ったオートシェイプ?)
・ツリー全体表示

【78571】Re:オートシェイプに名前を付ける方法
発言  カリーニン  - 16/11/14(月) 20:23 -

引用なし
パスワード
   横から失礼します。

下衆の勘繰りです。

シェイプにマクロを登録して呼び出す、ということが可能です。
この場合は、シェイプに名前を付けたり、名前を取得したりは不要です。

Sub test()
With ActiveSheet.Shapes(Application.Caller)
  .Left = .Left + 10
End With
End Sub
・ツリー全体表示

【78570】Re:オートシェイプに名前を付ける方法
発言  β  - 16/11/14(月) 19:11 -

引用なし
パスワード
   ▼りった さん:

名前を付けるには、どのシェープなのかを特定しなければいけませんね。
今作ったシェープに名前を付けるとか、今はこんな名前のシェープだけど、それを変更するとか
シート上のシェープをマウスで選択して、そのシェープに名前を付けるとか。

以下は、最後のケースの例でし。

Sub Sample()
  Selection.ShapeRange.Name = "Hoge"
End Sub

名前を参照する というのは、具体的には?

シート.Shapes("その名前") で参照できますよねぇ??
・ツリー全体表示

【78569】オートシェイプに名前を付ける方法
質問  りった  - 16/11/14(月) 18:45 -

引用なし
パスワード
   オートシェイプに名前を付ける方法及び名前を参照する方法が有ればご教示頂けますでしょうか?
・ツリー全体表示

【78568】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  マクロ初心者 E-MAIL  - 16/11/12(土) 16:16 -

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

ご返信ありがとうございます。
そして返答が遅くなり申し訳ございません。

>事情は理解しました。
>それでは、まず データ補正をしてみましょう。
>実際の、文字列としている日付が どのような形で入っているかが見えないのですが
>
>・K列を選択
>・データタブ 区切り位置
>・最初の画面は何もせず【次へ】
>・次の画面でも何もせず【次へ】
>・3つ目の画面で 日付(D) ymd となっているところを選んで完了ボタン
>
>どうなりますか?
>もし、これで K列のデータが日付型に変換できるなら
>L,M,Nの各列でも同じことをしてください。

すごい…このやり方は知りませんでした…
すべて日付型に変換できました。
・ツリー全体表示

【78567】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  β  - 16/11/11(金) 15:06 -

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

事情は理解しました。
それでは、まず データ補正をしてみましょう。
実際の、文字列としている日付が どのような形で入っているかが見えないのですが

・K列を選択
・データタブ 区切り位置
・最初の画面は何もせず【次へ】
・次の画面でも何もせず【次へ】
・3つ目の画面で 日付(D) ymd となっているところを選んで完了ボタン

どうなりますか?
もし、これで K列のデータが日付型に変換できるなら
L,M,Nの各列でも同じことをしてください。

表示書式は 和暦表示となっていると思いますので、ここは好きな書式を。

こうしてしまえば、あとは関数であれ、VBAであれ なんとでもできますね。
・ツリー全体表示

【78566】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  マクロ初心者  - 16/11/11(金) 14:19 -

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

ご返信ありがとうございます。

>変換して、西暦のイメージを持った【文字列】にしたいのでしょうか?
>それとも、本当の日付型データにしてかまわないのでしょうか?

この従業員データを作成しているのは私ではなく
委託している企業の給与システムから吐き出したデータなので
もしかすると吐き出す時に文字列になるようになっているのかもしれません。

私としても日付型のデータにしたいのでむしろありがたいです。
文字列のせいで数式などを使用するにも不便だったので…

マクロのことをまだまだ理解できていない者ですが
日ごろの作業を簡便化したいと考えておりますので
どうかお力を貸して頂けたらありがたいです。
・ツリー全体表示

【78565】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  β  - 16/11/11(金) 14:04 -

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

>文字列にて入力されている為
>変換して置換えができたら嬉しいです。

変換して、西暦のイメージを持った【文字列】にしたいのでしょうか?
それとも、本当の日付型データにしてかまわないのでしょうか?

★数式処理にしろ、マクロ処理にしろ、日付を扱う場合、そのデータが「日付型」であるのがベストですので
 シート上のデータとしても、最初から日付型で持たせておくべきです。
 このブックが、たとえば取引先から送られてきたものであれば、まだしも
 もし、自社内で作成しているブックであれば、シートへのデータ記入時に
 日付で入力するようにしましょう。

 そもそも、標準書式であれば 2016/11/15 と入力しようが 平成28年11月15日 と入力しようが
 エクセルが自動的に日付型に変換します。

 これが文字列のまま入っているということは、入力時に、わざわざ、先頭に ' をつけて
 入力しているか、あるいは、そのセルの書式を、わざわざ 文字列書式 にしているということなんですが
 そんなことをしているのですか?

 質問2でも同様で、DateDiff(のみならず、日付を扱う、ほとんどの関数)にとって
 与えられる日付はすべて日付型データという前提があります。
 アップされたコードのように As String とあって、かつ、シート上のセルにも
 文字列として日付のイメージが入力されているだけ ということであれば そのままでは
 処理はできません。

 どうしますか?
 あくまで文字列のまま、変換も文字列、計算も 文字列をもとに行い、その結果も
 文字列としてセットする?

 もし、こういう要件であれば、βとしてはお手伝いするモチベーションがわきません。
 こうすべきではありませんので。

 そうではなく、あらためて、シートの日付欄をすべて日付型に変換して、今後使っていく。
 そうするための、変換作業を簡便に行いたい ということであれば お手伝いします。
・ツリー全体表示

【78564】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  マクロ初心者  - 16/11/11(金) 13:44 -

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

ご返信ありがとうございます。
説明が足りず、すみません。

>とりあえず 質問1 ですけど、
>
>>K列及びM列の3行目以降に日付が入力されているのですが
>>すべて和暦の為、これらを西暦(YYYY/MM/DD)に置換えしたいのですが
>
>この日付って、文字列で入っているのですか?
>それとも、日付型データとして 平成28年11月15日 といったように入っているのですか?

文字列にて入力されている為
変換して置換えができたら嬉しいです。
・ツリー全体表示

【78563】Re:和暦を西暦に置換え、年齢・勤続年数...
発言  β  - 16/11/11(金) 13:33 -

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

とりあえず 質問1 ですけど、

>K列及びM列の3行目以降に日付が入力されているのですが
>すべて和暦の為、これらを西暦(YYYY/MM/DD)に置換えしたいのですが

この日付って、文字列で入っているのですか?
それとも、日付型データとして 平成28年11月15日 といったように入っているのですか?

セルを選択したとき 数式バーには、どう 表示されますか?

もし、セルのデータが 日付型であれば、(数式バーには 2016/11/15 といったように表示されています)
西暦変換する必要はなく、データは、あくまで【日付】であって、それを 【表示書式】で
エクセル上、「どうのように見せかけるか」だけの話ですから、表示書式を適切なものに設定すればOKです。

マクロ処理をするまでもないですね。

もし、「文字列」として入っている場合、セルを選択したときの数式バーにも
平成28年11月15日 といった形で表示されます。
もし、こうなっているなら、なんらかの変換は必要ですね。
・ツリー全体表示

【78562】和暦を西暦に置換え、年齢・勤続年数算出
質問  マクロ初心者  - 16/11/11(金) 10:16 -

引用なし
パスワード
   従業員の名簿の作成をエクセルにて行っているのですが
所属ごとのシートがありそれぞれのシートの構成は同じで
A〜AEまで情報が入力されています。

質問1.
K列及びM列の3行目以降に日付が入力されているのですが
すべて和暦の為、これらを西暦(YYYY/MM/DD)に置換えしたいのですが
色々調べたマクロを編集し、下記のマクロを作成したのですが
うまくいきません…。
K列の和暦をL列で一度西暦に置換え、別のマクロにてK列に貼り付けようと思ったのですが
もっと簡単にできる方法などあればご教授頂けないでしょうか?

Sub 和暦を西暦に変換()

  Dim i As Integer, j As Integer, l_r As Long
  For i = 1 To Worksheets.Count
  With Worksheets(i)
    l_r = .Range("K" & Rows.Count).End(xlUp).Row '最終行数をカウント
    For j = 3 To l_r '最終行から3行目まで繰り返す
      Range("L" & l_r).Value = Format$(Range("K" & l_r).Value, "yyyy/mm/dd")
    Next
  End With
Next i

End Sub


質問2.
L列及びN列の3行目以降にDATEDIF関数を使用してL列に年齢、
N列に勤続年数を求めたいのですが
下記のマクロではうまくいきませんでした。
それぞれのシートでK列及びM列にデータがある場合
L列及びN列に上記の年数を求めたいと思っています。
可能であればL列のセルの表示形式を「数値」に
N列のセルは勤続年数なので表示を「●年●ヶ月」にしたいと考えています。

尚、年齢・勤続年数を計算する基となる日付はそれぞれのシートAF1に入力しております。

マクロの知識もほとんどないような者ですが
何卒お力添えを頂ければと思います。


Sub 勤続年数年齢計算()

 Dim myDate1 As String
 Dim myDate2 As String
 myDate1 = Range("K3").Value
 myDate2 = Range("AF1").Value
 If myDate1 = "" Or myDate2 = "" Then
  MsgBox "日付が指定されておりません。"
  Exit Sub
 Else
  Range("L3").Value = DateDiff("YYYY", myDate1, myDate2)
  End If

End Sub
・ツリー全体表示

【78561】Re:異なるブック間のセルの操作
お礼  勉強中初心者  - 16/11/10(木) 12:34 -

引用なし
パスワード
   マナさん

ご回答頂きまして有難うございます。
頂いたアドバイスを元にアナログですが、紙に書き出してみました。
やりたい事が整理できて何とか望み通りの結果を得られました。
アクティブセルで少し躓きましたが、何とか出来ました。
有難うございました!
・ツリー全体表示

【78560】Re:異なるブック間のセルの操作
発言  マナ  - 16/11/9(水) 19:07 -

引用なし
パスワード
   > 2)ファイルAのB1、C1、D1をファイルBのC9、C10、C11に転記するマクロ

の部分は、さらに

2)−1 ファイルAのB1、C1、D1をコピー
2)−2 ファイルBのC9、C10、C11に行列を入れ替えて貼り付け

に分けられます。


勉強中ということであれば、
手作業でする場合の操作をイメージしながら
こんな感じで、箇条書きで書き出すとよいです。
・ツリー全体表示

【78559】Re:異なるブック間のセルの操作
発言  マナ  - 16/11/9(水) 18:28 -

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

こんな感じになると思います。

1)ファイルBを開くマクロ
2)ファイルAのB1、C1、D1をファイルBのC9、C10、C11に転記するマクロ
3)ファイルBを閉じるマクロ

ここまでできたら、2)の部分は

>アクティブにしている行

Activecell.Entirerow.Range("B1:D1")

に変更
・ツリー全体表示

【78558】異なるブック間のセルの操作
質問  勉強中初心者  - 16/11/9(水) 11:57 -

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

ファイルAのB1、C1、D1のセルに入力した情報があります。
ファイルBを開き、前述したファイルAのセル情報をC9、C10、C11に自動的に入力できるようにしたいです。
ちなみに、ファイルAの取得したい情報は常に同じ行にありますが、ファイルBに入力したい行は毎回違います。
なので、アクティブにしている行をファイルBにコピーできるようにしたいです。

このような場合、どんなコードにすれば良いのでしょうか?説明下手ですみません。
御手数ですが教えて頂きたいです。
どうぞ宜しくお願いします。
・ツリー全体表示

【78557】Re:VBAでのガントチャート作成
お礼  ROw  - 16/11/8(火) 16:58 -

引用なし
パスワード
   β様

ご指摘ありがとうございます
ルールをわからず申し訳ございません

困ってて・・
学校のほうでご教授ください

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

【78556】Re:VBAでのガントチャート作成
発言  β  - 16/11/8(火) 16:44 -

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

学校のほうにコメントしました。
学校も、こちらもマルチ許容ですが、いずれも、マルチの場合のルールが(それぞれ)あります。
そういったルールを守るほうが、質問者さんの利益になると思いますが。

どちらかに、絞られたほうがよろしいのでは?
・ツリー全体表示

【78555】VBAでのガントチャート作成
質問  ROw  - 16/11/8(火) 16:27 -

引用なし
パスワード
   現在、エクセル2010のVBAでガントチャートみたいなものを作りたいのですが
行き詰り教えて頂けるとありがたいです

内容

ユーザーフォームに

納入便名、ステーション、着時間、発時間
4つのTextBoxと 入力完了 コマンドボタンがあります

納入便名(会社名) ステーション(横軸の番号)
着時間(7:20など) 発時間(7:40など)

これを手打ち入力して 入力完了ボタンを押すと

6      7     8      9     10     11      12

{1}     [エクセル便]
{2}
{3}
{4}

上記のような感じでセルが結合する感じにしたいのです

1時間のセルは 10分単位でセルで区切られています
・ツリー全体表示

【78554】Re:行と列が可変の行列計算
発言  sy  - 16/11/5(土) 23:21 -

引用なし
パスワード
   ▼マルチーズ さん:
>Q&Aサロンとマルチポスト。

あぁ、向こうでも同じ質問されてたんですね。

▼yuki さん:

なら禁止事項に引っかかるので、こちらで続けるなら向こうはその旨を伝えて解決済にして下さい。
もちろんこちらを閉じて、向こうで続けても構いませんけど。
どちらか一つに絞って下さい。
・ツリー全体表示

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