« 暗号化・復号化(2) | メイン | 暗号化・復号化(4) »

2008年11 月28日 (金曜日)

コメント

かず

なかなか面白いです。
-1をかけるって発想が良いですね!

ところで、For Each って重宝しますよ。

Dim MyRange As Range
For Each MyRange In Selection
Text = MyRange.Value
If MyRange.HasFormula Or Text = "" Then GoTo BEBE

Next

くまぷー

あ、かずさん、どもです。

For Eachループは知ってはいるのですが
あまり使いません、というか苦手です(^^ゞ

さて、かずさんご呈示のコードの省略され散る部分がわからないという方のために
一応、For Each ループコードの完全版を載せておきますね。

Sub 暗号化_復号化()

'かずさん改 For Eachループを使用

Dim Length As Long
Dim Text
Dim S As String, NewText As String
Dim CodeNum As Long
Dim i As Long
Dim Ans As Integer
Dim MyRange As Range

Ans = MsgBox("選択範囲を暗号化→複合化 または 複合化→暗号化します。" & vbCrLf & "よろしいですか? (^o^)b", vbYesNo)
If Ans = vbNo Then Exit Sub


Application.ScreenUpdating = False
On Error Resume Next

For Each MyRange In Selection

Text = MyRange.Value
If MyRange.HasFormula Or Text = "" Then GoTo BEBE
Length = Len(Text)

NewText = ""
For i = 1 To Length
S = Mid(Text, i, 1)
CodeNum = AscW(S)
CodeNum = CodeNum * -1
S = ChrW(CodeNum)
NewText = NewText & S
Next
Text = NewText

MyRange.Value = Text
BEBE:
Next

Application.ScreenUpdating = True
End Sub

くまぷー

・・・でExcel版のつぎはWordドキュメントの
暗号化を取り上げようと思っているのですが・・・

ホントに大雑把な仕様・・・

選択部分を暗号化・復号化するマクロ。(^^ゞ

かず

最近さっぱりマクロをさわってないので、
面白そうなので、他に、暗号化⇔復号化 の方法がないか考えてみました。
が、文字を逆に並べ替えるくらいしか思いつきませんでした。

Sub 暗号化_復号化2()
 Dim MyRange As Range
 Dim CellText As String
 Dim NewText As String
 Dim i As Long
 Dim Length As Long

 If TypeName(Selection) <> "Range" Then Exit Sub
 Application.ScreenUpdating = False
 For Each MyRange In Selection
  CellText = MyRange.Value
  If Not (MyRange.HasFormula Or CellText = "") Then
   Length = Len(CellText)
   NewText = ""
   For i = 1 To Length
    NewText = ChrW(AscW(Mid(CellText, i, 1)) * -1) & NewText
   Next
   MyRange.Value = NewText
  End If
 Next
 Application.ScreenUpdating = True
End Sub

くまぷー

お早うございます。

なるほど

NewText = ChrW(AscW(Mid(CellText, i, 1)) * -1) & NewText

右辺の第一項と第二項をひっくり返すことに
よって文字列を逆並びにする・・・
そうすれば解読するのにさらに一手間増える・・・
気がつきませんでした(^^ゞ
2人寄れば文殊の知恵?(^^ゞ

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

TOP メニュー