Excel VBA質問箱 IV

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

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


9088 / 13644 ツリー ←次へ | 前へ→

【29376】教えてください トシユキ 05/10/3(月) 23:13 質問[未読]
【29379】Re:教えてください awu 05/10/4(火) 1:30 発言[未読]
【29383】ありがとうございます トシユキ 05/10/4(火) 9:11 発言[未読]
【29387】Re:ありがとうございます awu 05/10/4(火) 9:56 回答[未読]
【29389】助かりました トシユキ 05/10/4(火) 10:26 発言[未読]
【29401】Re:助かりました awu 05/10/4(火) 14:01 回答[未読]
【29414】できました トシユキ 05/10/4(火) 16:10 お礼[未読]
【29381】Re:教えてください Hiro 05/10/4(火) 7:06 発言[未読]
【29384】ありがとうです トシユキ 05/10/4(火) 9:17 発言[未読]

【29376】教えてください
質問  トシユキ  - 05/10/3(月) 23:13 -

引用なし
パスワード
   エクセルの基本操作で出来るのか、関数等が必要なのかわかりません。
エクセルのユーザー名をセルに表示させることが出来ますか?
もし出来るなら、A1,B1,C1・・・・(1の行)のどれかを変更したら、
ユーザー名と、その日時を指定したセル(例えばZ1)に表示させたいのですが
無理ですかね。
ヨロシクお願いいたします。

【29379】Re:教えてください
発言  awu  - 05/10/4(火) 1:30 -

引用なし
パスワード
   > エクセルのユーザー名をセルに表示させることが出来ますか?

出来ますが、エクセル(Office)のユーザー名のことでいいのでしょうか?

それであれば、Application.UserName で取得できますが・・・

もし、ログオンユーザー名のことであれば、Win32APIのGetUserName関数を
使用することになると思いますが・・・

どちらでしょうか? たぶん 後者のことではないかと推察しますが・・・

【29381】Re:教えてください
発言  Hiro  - 05/10/4(火) 7:06 -

引用なし
パスワード
   ▼トシユキ さん:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("Z1") = Application.UserName
Range("Z2") = "=today()"
End Sub

このようなKとですか。間違っていましたら、お許しを。

>エクセルの基本操作で出来るのか、関数等が必要なのかわかりません。
>エクセルのユーザー名をセルに表示させることが出来ますか?
>もし出来るなら、A1,B1,C1・・・・(1の行)のどれかを変更したら、
>ユーザー名と、その日時を指定したセル(例えばZ1)に表示させたいのですが
>無理ですかね。
>ヨロシクお願いいたします。

【29383】ありがとうございます
発言  トシユキ  - 05/10/4(火) 9:11 -

引用なし
パスワード
   awuさんありがとうです
エクセル(Office)のユーザー名のことです
Application.UserNameとはなんでしょうか?できれば教えて頂きたいのですが。
お手数ですが宜しくお願いいたします

【29384】ありがとうです
発言  トシユキ  - 05/10/4(火) 9:17 -

引用なし
パスワード
   Hiroありがとうございます
ちなみにこれ↓はどのよう使ったらよろしいのでしょうか。
>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>Range("Z1") = Application.UserName
>Range("Z2") = "=today()"
>End Sub
>
それと、何度も申し訳ないのですが、
2の行、3の行と繰り返しできるものでしょか?

【29387】Re:ありがとうございます
回答  awu  - 05/10/4(火) 9:56 -

引用なし
パスワード
   > エクセル(Office)のユーザー名のことです
> Application.UserNameとはなんでしょうか?できれば教えて頂きたいのですが。

ここは、VBAのコーナーですので、VBAでの対処方法ですよね。

あと、更に確認しますが、エクセル(Office)のユーザー名ということは、
Excelのメニューから[ツール]-->[オプション]-->[全般]タブで一番下に表示
される「ユーザー名」のことでいいのですね。

それであれば、例えば機能範囲を使用しているシートに限る場合で、
セル A1:Y1 のいずれかを変更すると Z1 にユーザー名と日付を表示する
ということであれば、次のような操作でVBAコードを設定します。

・使用しているシートのシート名タブを右クリックして「コードの表示」を
 指定します。
・開いたコードウィンドウに下記コード(11行)をコピーして貼り付けます。
・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
・メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティ
 レベル」を 「中」にして[OK]します。

 以上で設定完了です。 

これで、ご希望通りの機能になったかと思いますが如何でしょうか。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
With Application
  Set Rng = .Intersect(Range("A1:Y1"), Target)
  If Rng Is Nothing Then Exit Sub
  .EnableEvents = False
  Range("Z1").Value = .UserName & " : " & Date
  .EnableEvents = True
End With
Set Rng = Nothing
End Sub

【29389】助かりました
発言  トシユキ  - 05/10/4(火) 10:26 -

引用なし
パスワード
   awuさんありがとうございました
Excelのメニューから[ツール]-->[オプション]-->[全般]タブで一番下に表示
される「ユーザー名」のことです。

この場合に、2の行での変更がZ2
      3の行での変更がZ3
      4の行での変更がZ4
のようにエンドレスでできるものなんでしょうか。
これらは普通の関数でもできるのでしょか?

本当に何度もすみません。

【29401】Re:助かりました
回答  awu  - 05/10/4(火) 14:01 -

引用なし
パスワード
   使用している各行に全て機能させる場合は、こんな感じで如何でしょうか。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Dim R As Range
Set Rng = Application.Intersect(Range("A1:Y" & _
    Cells.SpecialCells(xlCellTypeLastCell).Row), Target)
If Rng Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each R In Rng
  Range("Z" & R.Row).Value = Application.UserName & " : " & Date
Next R
Application.EnableEvents = True
Set Rng = Nothing
End Sub

【29414】できました
お礼  トシユキ  - 05/10/4(火) 16:10 -

引用なし
パスワード
   色々とありがとう御座います
大変助かりました。

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